สตริงถูกเข้ารหัสด้วยคุณสมบัติต่อไปนี้ (โดยใช้ C#):
myAes.Mode = CipherMode.CBC
myAes.KeySize = 128
myAes.Padding = โหมดการแพดดิ้ง PKCS7
myAes.BlockSize = 128
myAes.FeedbackSize = 128
รหัส: 5753B8AA97BE5B5D9584864DF3134E64
นี่คือฟังก์ชั่นการถอดรหัสของฉัน:
int AESdecrypt (ถ่านที่ไม่ได้ลงชื่อ *ciphertext, size_t ciphertext_len, ถ่าน * คีย์ที่ไม่ได้ลงชื่อ, ถ่านที่ไม่ได้ลงชื่อ * iv, ถ่านที่ไม่ได้ลงชื่อ * ข้อความธรรมดา)
{
EVP_CIPHER_CTX *ctx;
เลนส์ int;
int retErrors = 1;
int ธรรมดา text_len;
/* สร้างและเริ่มต้นบริบท */
ถ้า(!(ctx = EVP_CIPHER_CTX_new()))
{
LOGF_TRACE("\t เกิดข้อผิดพลาดใน EVP_CIPHER_CTX_new");
EVP_CIPHER_CTX_free(ctx);
กลับ 0;
}
/*
* เริ่มต้นการดำเนินการถอดรหัส สำคัญ - ให้แน่ใจว่าคุณใช้รหัส
* และขนาด IV ที่เหมาะสมสำหรับรหัสของคุณ
* ในตัวอย่างนี้ เราใช้ AES 256 บิต (เช่น คีย์ 256 บิต) เดอะ
* ขนาด IV สำหรับโหมด *ส่วนใหญ่* จะเหมือนกับขนาดบล็อก สำหรับ AES นี้
* คือ 128 บิต
*/
if(1 != EVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, คีย์, iv))
{
LOGF_TRACE("\t เกิดข้อผิดพลาดใน EVP_DecryptInit_ex");
EVP_CIPHER_CTX_free(ctx);
กลับ 0;
}
/*
* ระบุข้อความที่จะถอดรหัสและรับเอาต์พุตข้อความธรรมดา
* สามารถเรียกใช้ EVP_DecryptUpdate ได้หลายครั้งหากจำเป็น
*/
if(1 != EVP_DecryptUpdate(ctx, ข้อความธรรมดา, &len, ciphertext, ciphertext_len))
{
LOGF_TRACE("\t EVP_DecryptUpdate");
EVP_CIPHER_CTX_free(ctx);
กลับ 0;
}
plaintext_len = เลน;
/*
* จบการถอดรหัส อาจเขียนไบต์ข้อความธรรมดาเพิ่มเติมที่
* ขั้นตอนนี้
*/
if(1 != EVP_DecryptFinal_ex(ctx, ข้อความธรรมดา + len, &len))
{
LOGF_TRACE("\t EVP_DecryptFinal_ex");
EVP_CIPHER_CTX_free(ctx);
กลับ 0;
}
plaintext_len += เลน;
/* ทำความสะอาด */
EVP_CIPHER_CTX_free(ctx);
กลับ plaintext_len;
}
อย่างไรก็ตาม เมื่อฉันพยายามถอดรหัส สตริงผลลัพธ์จะมี 16 (0x10) ไบต์พิเศษ: (ลบอักขระบางตัวออกด้วยเหตุผลด้านความปลอดภัย)
0000 - 2e 3c 81 6b ed 2e 6b 59-fe 38 ae b7 56 11 1f c2 .<.k..kY.8..V...
0010 - 45 53 54 41 20 45 53 20-55 4e 41 20 50 52 55 45 ESTA ES UNA PRUE
0020 - 42 41 20 44 45 20 43 49-46 52 41 44 4f 20 41 45 BA DE CIFRADO AE
0030 - 53 20 50 41 52 41 20 45-54 48 45 52 4e 45 54 20 S พาราอีเทอร์เน็ต
0040 - XX XX XX XX XX XX XX XX-XX XX XX XXXXXXXXX
ฉันต้องการทราบว่านี่เป็นเรื่องปกติหรือไม่และฉันควรลบ 16 ไบต์แรกออกหรือจะหลีกเลี่ยงการมีไบต์พิเศษเหล่านั้นได้อย่างไร (ฉันรู้สึกไม่ปกติสำหรับฉัน)
สิ่งนี้อาจเกี่ยวข้องกับ IV ที่พวกเขาใช้สำหรับการเข้ารหัสหรือไม่
ขอบคุณ.