【问题标题】:Encryption and Decryption using Crypto使用 Crypto 进行加密和解密
【发布时间】:2018-06-26 15:39:38
【问题描述】:

我需要在 iOS 和 Android 上加密数据并在 Node 中使用 Crypto 解密数据。

我正在尝试在 Android 和 iOS 中加密数据并在 NodeJs 中解密相同的数据。 该算法的 Key Length 和 Padding 在 Android 和 iOS 上不兼容。

我在NodeJS中使用下面的方法来解密:

const algorithm = 'aes-128-ecb'; 
const appSecret = '1234567890123456';
decrypt(text) {
    var decipher = crypto.createDecipher(algorithm, appSecret);
    var dec = decipher.update(text, 'hex', 'utf8');
    dec += decipher.final('utf8');
    return dec;
}

Android 使用相同的算法以及 appSecret 和 pkcs5 填充,并使用 MD5 对密钥进行哈希处理。当android加密数据时,我能够成功解密。但是即使它们使用相同的算法和appSecret,我也无法解密来自iOS的数据加密后。

【问题讨论】:

  • 发布你用来加密 iOS 数据的代码。
  • 我会使用 Charles、Fiddler 或其他一些 MITM 攻击来观察来回传递的原始数据。我有一个类似的问题,Android 可以很好地处理 UTF8 编码,但是 iOS 会出现像 &+ 这样的特殊字符,而我发现差异的唯一方法是检查原始有效负载并将它们与它们应该是什么进行比较。在stackoverflow.com/questions/46762155/…查看我的问题

标签: javascript android ios node.js encryption


【解决方案1】:
private secureKey = CryptoJS.enc.Base64.parse('123456789101234567890123456789011');
private secureIV = CryptoJS.enc.Base64.parse('1234567891123456');

var encrypted = CryptoJS.AES.decrypt(myText, this.secureKey, {
      iv: this.secureIV
    });
console.log('DecryptedData: '+encrypted);

【讨论】:

    猜你喜欢
    • 2012-04-07
    • 1970-01-01
    • 2021-11-04
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多