Node.js与Swift的AES加密解密

最近在做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

参考网页

一介布衣

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.数据安全 01 攻城利器:Charles(公司中一般都使用该工具来抓包,并做网络测试) 注意:Charles在...
    Lucky丶晴阅读 5,422评论 0 9
  • 1.数据安全 01数据安全的原则1)在网络上"不允许"传输用户隐私数据的"明文"2.)在本地"不允许"保存用户隐私...
    小枫123阅读 3,627评论 0 1
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 9,017评论 2 41
  • 第二章(04) 天朗气清。 大暑之后的天气便不再燥热,但人们对太阳的拒畏仍在持续。 "喂?扬佳,是我。感觉好点了吗...
    花和少年呀阅读 3,456评论 4 7
  • 战士手掌中有几百条纹路 由狂风刻画的过往 艳阳里流汗的黑色脸庞 悲伤 众人躺在沙土里仰望山岗 还有多少天才到退场 ...
    银桀阅读 2,515评论 0 0

友情链接更多精彩内容