有效果的网站排名,天津市建设教育培训网,网络架构分析,net域名做企业网站怎么样在对接低功耗蓝牙时#xff0c;我们需要对蓝牙传输数据进行加解密#xff0c;由于我们对接的命令是16进制#xff0c;如5500020101aa00#xff0c;每个16进制表示特定的含义#xff0c;所以直接对16进制加解密
import CryptoJS from crypto-js// AES128 加密函数
functio…在对接低功耗蓝牙时我们需要对蓝牙传输数据进行加解密由于我们对接的命令是16进制如5500020101aa00每个16进制表示特定的含义所以直接对16进制加解密
import CryptoJS from crypto-js// AES128 加密函数
function aes128Encrypt(hexData, key, iv) {// 将十六进制字符串转换为字节数组var data CryptoJS.enc.Hex.parse(hexData);// 将密钥和 IV初始向量转换为字节数组var keyBytes CryptoJS.enc.Hex.parse(key);var ivBytes CryptoJS.enc.Hex.parse(iv);// 执行 AES-128 加密使用 CBC 模式和 PKCS7 填充var encrypted CryptoJS.AES.encrypt(data, keyBytes, {iv: ivBytes,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});// 将加密后的字节数组转换为十六进制字符串var encryptedHex encrypted.ciphertext.toString();return encryptedHex;
}// AES128 解密函数
function aes128Decrypt(encryptedHex, key, iv) {// 将密文的十六进制字符串转换为字节数组var encryptedBytes CryptoJS.enc.Hex.parse(encryptedHex);// 将密钥和 IV初始向量转换为字节数组var keyBytes CryptoJS.enc.Hex.parse(key);var ivBytes CryptoJS.enc.Hex.parse(iv);// 将字节数组转换为加密的参数对象var encryptedData CryptoJS.lib.CipherParams.create({ciphertext: encryptedBytes});// 执行 AES-128 解密使用 CBC 模式和 PKCS7 填充var decrypted CryptoJS.AES.decrypt(encryptedData, keyBytes, {iv: ivBytes,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});// 将解密后的字节数组转换为十六进制字符串var decryptedText decrypted.toString(CryptoJS.enc.Hex);return decryptedText;
}export function aesDecrypt(encryptedHex) {// 解密//const key suanfaxiaosheng // AES 密钥必须是 16 字节128 位const key 7375616e66617869616f7368656e6740//const iv suanfaxiaosheng // 初始化向量必须是 16 字节128 位const iv 7375616e66617869616f7368656e6740const decryptedData aes128Decrypt(encryptedHex, key, iv)return decryptedData
}export function aesEncrypt(hexData) {// 加密//const key suanfaxiaosheng // AES 密钥必须是 16 字节128 位const key 7375616e66617869616f7368656e6740//const iv suanfaxiaosheng // 初始化向量必须是 16 字节128 位const iv 7375616e66617869616f7368656e6740const encryptedData aes128Encrypt(hexData, key, iv) return encryptedData
}OK,只要加解密出来的结果与嵌入式那边出来的结果一致就可以愉快的对接了, 关注算法小生不迷路