程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了加密iOS并解密Node.js AES大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决加密iOS并解密Node.js AES?

开发过程中遇到加密iOS并解密Node.js AES的问题如何解决?下面主要结合日常开发的经验,给出你关于加密iOS并解密Node.js AES的解决方法建议,希望对你解决加密iOS并解密Node.js AES有所启发或帮助;
  1. 您确定两个库中都使用了相同的密钥吗?您说您取出了AESCrypt中的SHA-256部分,库现在如何使用password参数?AES算法只能使用长度为16、24或32个字节的密钥。您的密码长16个字节,但是您是否在加密功能中将相应的参数更改为128(而不是256)?您知道CryptoJs如何使用key参数吗?您确定将其直接使用,还是在传递给基础原始AES加密功能之前进行一些处理(例如,哈希处理)?

  2. CryptoJs库使用哪种加密方式?它的文档没有说。鉴于它要求进行静脉输液,可能是CBC,但您必须查看数据源才能确定。AESCrypt的文档声称使用CBC模式,但是您在任何地方都没有提供它IV。那必须意味着它在某个地方生成自己的东西,或者总是使用固定的东西。(其中一半失败了CBC模式的目的,但这是另一回事了)。因此,您需要弄清楚IV到底是什么。

TL; DR:除非确保在两个库中使用相同的密钥和密钥长度,相同的模式和相同的IV,否则您将拥有不同的密文。

解决方法

我一直在寻找一个解决方案,并在Node.js服务器和Objective-C客户端上进行加密,反之亦然,使用AES(或其他合适的方法)进行搜索

我对密码学还比较陌生,因此我无法理解为什么每种语言的加密文本都不同。

这是我到目前为止的内容:

使用此CryptoJS库的
Node.js加密方法 -node-cryptojs-aes

var node_cryptojs = require("node-cryptojs-aes");
var CryptoJS = node_cryptojs.CryptoJS;

    var textToEncrypt = 'Hello';
var key_clear = 'a16byteslongkey!';

//encrypted + decrypted

var encrypted = CryptoJs.AEs.encrypt(clearText,key_clear,{ iv: null });
var decrypted = CryptoJs.AEs.decrypt(encrypted,{ iv: null });

//Outputs   
    console.log("encrypted: " + encrypted);     //encrypted: U2FsdGVkX1/ILXOjqIw2Vvz6DzRh1LMHgEQhDm3OunY=
console.log("decrypted: " + decrypted.toString(CryptoJs.enc.Utf8));   // decrypted: Hello

使用AESCrypt库的 Objective-C加密方法

NSString* textToEncrypt = @"Hello";

// encrypt
NSString* encryptedText = [AESCrypt encrypt:textToEncrypt password:@"a16byteslongkey!"];

// decrypt
NSString* decryptedText = [AESCrypt decrypt:encryptedText password:@"a16byteslongkey!"];

// output
NSLog(@"Text to encrypt: %@",textToEncrypt);    // Text to encrypt: Hello
NSLog(@"Encrypted text: %@",encryptedText);     // Encrypted text: wY80MJyxRRJdE+eKw6KaiA==
NSLog(@"Decrypted text: %@",decryptedText);     // Decrypted text: Hello

多年来,我一直在挠头,尝试了我能想到的一切。如果需要,可以显示库中的基础加密方法。AESCrypt库中的密钥上已应用SHAR256哈希,但是我已删除了它,并认为字符串编码有些不匹配。

大佬总结

以上是大佬教程为你收集整理的加密iOS并解密Node.js AES全部内容,希望文章能够帮你解决加密iOS并解密Node.js AES所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。