我为ESP8266使用arduino-crypto。我没有遇到任何错误,但确实有一个问题,希望您能为我解决。
此代码:
#define BLOCK_SIZE 16
uint8_t key[BLOCK_SIZE] = { 0x1C,0x3E,0x4B,0xAF,0x13,0x4A,0x89,0xC3,0xF3,0x87,0x4F,0xBC,0xD7,0xF3, 0x31, 0x31 };
uint8_t iv[BLOCK_SIZE] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
char plain_text[] = "1234567890ABCDEF1234567890ABCDEF";
// encrypt
int length = 0;
bufferSize(plain_text, length);
char encrypted[length];
encrypt(plain_text, encrypted, length);
Serial.println("");
Serial.print("Encrypted: ");
Serial.println(encrypted);
Serial.println(length);
Serial.println(strlen(encrypted));
工作正常,并给我一个加密值:
已加密:y3QzsGi6cYiy3GGs31jXvTY8VI2OrlxsohOasiw4pgP + 54gWXtUZPrjuRvOfyRTz
现在,如果我同时进行加密和解密,那么它将对其进行解码就可以了。
但是,当我只是运行解密并复制加密的值然后运行以下代码时:
// decrypt
char* encrypted = "y3QzsGi6cYiy3GGs31jXvTY8VI2OrlxsohOasiw4pgP+54gWXtUZPrjuRvOfyRTz";
int length = strlen(encrypted);
char decrypted[length];
decrypt(encrypted, decrypted, length);
Serial.print("Decrypted: ");
Serial.println(decrypted);
它在控制台中输出:
解密:⸮⸮⸮⸮⸮j⸮Ҏ⸮R|;⸮⸮1234567890ABCDEF
其中有一些原始的消息字母/数字,但不确定为什么不像当您同时背对背运行时那样不对它进行解密。
该如何解决?