问题的根本原因是使用不同的AES 128实现算法。Arduino ESP8266使用的是硬件AES加密模块,而在线工具可能使用的是软件实现。
为了解决这个问题,可以使用相同的AES 128实现算法来确保结果的一致性。下面是一个使用软件库CryptoJS实现AES 128加密和解密的示例代码:
// 引入CryptoJS库
// AES 128加密
function encryptAES(text, key) {
var encrypted = CryptoJS.AES.encrypt(text, key);
return encrypted.toString();
}
// AES 128解密
function decryptAES(ciphertext, key) {
var decrypted = CryptoJS.AES.decrypt(ciphertext, key);
return decrypted.toString(CryptoJS.enc.Utf8);
}
// 测试代码
var plaintext = "Hello World";
var key = "0123456789abcdef";
var encryptedText = encryptAES(plaintext, key);
console.log("Encrypted Text: " + encryptedText);
var decryptedText = decryptAES(encryptedText, key);
console.log("Decrypted Text: " + decryptedText);
在上面的代码中,我们使用CryptoJS库来实现AES 128加密和解密。首先,我们定义了encryptAES
函数来进行加密,它接受明文和密钥作为参数,并返回加密后的密文。然后,我们定义了decryptAES
函数来进行解密,它接受密文和密钥作为参数,并返回解密后的明文。
在测试代码部分,我们定义了一个明文和一个密钥,并分别调用encryptAES
和decryptAES
函数进行加密和解密操作。最后,我们将加密后的密文和解密后的明文输出到控制台进行验证。
请注意,您需要在HTML文档中引入CryptoJS库才能运行上述代码。