美文网首页
Node.js与Swift的AES加密解密

Node.js与Swift的AES加密解密

作者: funpig | 来源:发表于2017-10-17 14:10 被阅读166次

最近在做iOS和Node.js之间的aes-256-cbc加密解密,遇到了加密结果不一致的问题。原因就是Nodejs端使用了错误的函数!

    var crypto = require('crypto');

    var algorithm = 'aes-256-cbc'
    var key = '00000000000000000000000000000000';
    var iv = '0000000000000000';
    var encrypted = "";
    //错误的函数,就算传入填充量 iv也没用,也不报错
    //var cipher = crypto.createCipher(algorithm, key, iv);
    //正确的函数以iv结尾,支持填充量 iv
    var cipher = crypto.createCipheriv(algorithm, key, iv);
    encrypted += cipher.update(data, 'utf8', 'base64');// 'binary' 'base64' 'hex'
    encrypted += cipher.final('base64');
    return encrypted;

使用正确函数后,iOS和Nodejs之间加密结果一致了。

原本Nodejs端加密使用hex编码,但iOS端却不能正确解密,换成base64后能正确解密。iOS端使用第三方开源库SecrecySwift,它自带的Demo解密hex编码也不成功,尝试修改代码未果,放弃!直接使用base64编码。

PS: 已经提交pull request修改了解密Hex编码失败的请求。可以直接使用funpig修改版本 SecrecySwift

参考网页

一介布衣

相关文章

网友评论

      本文标题:Node.js与Swift的AES加密解密

      本文链接:https://www.haomeiwen.com/subject/xnxduxtx.html