Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption (已解决)AES双向加密解密(Arduino->;节点,节点->;Arduino)_Encryption_Arduino_Aes - Fatal编程技术网

Encryption (已解决)AES双向加密解密(Arduino->;节点,节点->;Arduino)

Encryption (已解决)AES双向加密解密(Arduino->;节点,节点->;Arduino),encryption,arduino,aes,Encryption,Arduino,Aes,我设法让他从(节点Arduino)加密和解密 从节点我也可以加密,但当我想从arduino解密时,它会得到不正确的字符。 在代码中,您可以找到arduno和node的加密和解密 Arduino->Node: 加密Arduino: 原文:“{'switchOnCooler':'true'}” 数据:Ww5DkZXWXN3c9QDy4iEYQwfSP8wipQXuWZgJy567ZQdt9xL40WhAyGJsAAXAldun iv:MTIzNDU2Nzg5MDEyMzQ1AA== 解密节点: {'

我设法让他从(节点Arduino)加密和解密

从节点我也可以加密,但当我想从arduino解密时,它会得到不正确的字符。 在代码中,您可以找到arduno和node的加密和解密

Arduino->Node:

加密Arduino:

原文:“{'switchOnCooler':'true'}”

数据:Ww5DkZXWXN3c9QDy4iEYQwfSP8wipQXuWZgJy567ZQdt9xL40WhAyGJsAAXAldun

iv:MTIzNDU2Nzg5MDEyMzQ1AA==

解密节点:

{'switchOnCooler':'true'}

节点->Arduino

加密节点:

原文:“{'info':'Hello stackoverflow'}”

数据:X6iXoxLdLItG3MmQ3Y407lwUYJW+T0Nwu7AIA5GDS+fSCK08KBycP0iNUy3x3AvU

IV:987654321098765

解密Arduino:

{'info':⸮⸮⸮溢出'}

有人能帮我吗

节点代码:

var CryptoJS=require(“CryptoJS”);
var AESKey='2B7E151628AED2A6ABF7158809CF4F3C';
//-----功能--------
函数解密消息(esp8266_iv,esp8266_msg){
var plain_iv=新缓冲区(esp8266_iv,'base64')。toString('hex');
var iv=CryptoJS.enc.Hex.parse(普通的_iv);
var key=CryptoJS.enc.Hex.parse(AESKey);
console.log(“Let's”);
//解密
试一试{
var bytes=CryptoJS.AES.decrypt(esp8266_msg,key,{iv:iv});
var plaintext=bytes.toString(CryptoJS.enc.Base64);
var decoded_b64msg=新缓冲区(纯文本,'base64')。toString('ascii');
var decoded_msg=新缓冲区(decoded_b64msg,'base64')。toString('ascii');
日志(“Decryptedage:,decoded_msg”);
var aux2=JSON.parse(已解码)
返回aux2
}捕获(错误){
日志(“错误解密”)
}
}
函数加密消息(messagePlain){
console.log(“--------------------------”)
console.log(“----EncryptMessage----”)
console.log(“--------------------------”)
试一试{
var key=CryptoJS.enc.Hex.parse(AESKey);
var ivPlain=“987654321098765”//static IV
var ivHex=CryptoJS.enc.Base64.parse(ivPlain);
var txtBase64=新缓冲区(messagePlain).toString('base64')//编码base64文本
var encrypted=CryptoJS.AES.encrypt(txtBase64,密钥,{iv:ivHex});
加密的.toString(CryptoJS.enc.base64)
var请求=要求(“请求”);
var url='1〕http://192.168.1.41/info?“+加密的.toString()+”&“+ivPlain”
日志(“url”,url)
请求(url、函数(错误、响应、正文){
log(“完成获取”)
})
}捕获(错误){
log(“错误加密:”+错误)
} 

}
如果要在GET请求中使用base64,则应使用base64 url。IV值可能会受到影响,因为数据丢失,这会更改第一个解密的块。不过,将base64用于纯文本是完全没有必要的。只需指定一个好的字符编码,例如UTF-8,或者-如果文本是简单的英语-US-ASCII。早上好,我试图在base64上发出请求,但我找不到任何关于如何执行此操作的文档。你能帮我吗?好的,你可以用另外两个字符替换这两个字符(
+
替换为
-
/
替换为
.
),然后删除等号,从base64到base64url。这当然比仅仅使用正确的base64url字母表效率要低。快速搜索会显示错误,但您必须自己测试。好的。。。。问题解决了。。。问题是我需要从节点发送十六进制的IV>Last:var ivPlain=“987654321098765”>已解决:var ivPlain=“ABCDFF450405060708090A0B0C0D0E0F”