我已经搜索了很多关于如何在Node.js服务器和Objective-C客户端之间使用AES(或其他合适的加密方式)进行加密的解决方案。
由于我对密码学相对较新,因此我不理解为什么我的加密文本在每种语言中都是不同的。
以下是我目前所了解的内容:
Node.js加密方法使用这个CryptoJS库-node-cryptojs-aes。
我已经苦思冥想很久并尝试了我所能想到的一切。如果需要,可以展示库中的基础加密方法。在AESCrypt库中应用了SHAR256哈希算法于密钥,但我已将其删除,并认为字符串编码存在一些不匹配。
由于我对密码学相对较新,因此我不理解为什么我的加密文本在每种语言中都是不同的。
以下是我目前所了解的内容:
Node.js加密方法使用这个CryptoJS库-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, key_clear, { iv: null });
//Outputs
console.log("encrypted: " + encrypted); //encrypted: U2FsdGVkX1/ILXOjqIw2Vvz6DzRh1LMHgEQhDm3OunY=
console.log("decrypted: " + decrypted.toString(CryptoJS.enc.Utf8)); // decrypted: Hello
Objective-C加密方法 使用AESCrypt库
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哈希算法于密钥,但我已将其删除,并认为字符串编码存在一些不匹配。