【问题标题】:Node js equivalent code for android AES encryptionandroid AES加密的Node js等效代码
【发布时间】:2016-05-03 07:21:58
【问题描述】:

我正在尝试在 android 中加密我的消息并在节点 js 服务器中解密。

安卓代码:

SecretKeySpec secretkeyspec = new SecretKeySpec("password".getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretkeyspec);
byte[] encoded = cipher.doFinal(s.getBytes());
System.out.println(Arrays.toString(encoded));

节点 JS 代码:

var crypto = require('crypto');
var CIPHER_ALGORITHM = 'aes-128-cbc';
var key = 'password';
var ivBuffer = new Buffer(16);
ivBuffer.fill(0);

var cipher = crypto.createCipheriv(CIPHER_ALGORITHM, new Buffer(key, 'utf-8'), ivBuffer);
var encryptedBuffer = cipher.update(plainText, 'utf-8');
var fBuf = new Int8Array(Buffer.concat([encryptedBuffer, cipher.final()]));
console.log(fBuf);

当我尝试打印缓冲区时,我在 android 和 node js 之间得到了不同的值。

节点缓冲区:

[26, 116, 2、 -56, -70, 121, -44, 66, 101, 84, -46, 127, -70, -42, 67, 31, 124, -104, -24, 88, 74, 4、 -22, -70, -39, 48, -120, -21, 37, -15, -24, -30]

Android 缓冲区:

[26, 116, 2, -56, -70, 121, -44, 66, 101, 84, -46, 127, -70, -42, 67, 31, -92, 97, 16, - 101、-45、-68、108、89、-125、17、-71、53、2、-13、31、-79]

谁能告诉android默认的AES等效节点js解密代码是什么。

【问题讨论】:

    标签: android node.js encryption aes cryptojs


    【解决方案1】:

    我终于找到了答案。

    var cipher = crypto.createCipheriv(CIPHER_ALGORITHM, new Buffer(key, 'utf-8'), '');
      var encryptedBuffer = cipher.update(plainText, 'utf-8');
      var finalEncryptedBuffer = new Int8Array(Buffer.concat([encryptedBuffer, cipher.final()]));
      console.log(encodeBytes(finalEncryptedBuffer));

    【讨论】:

      【解决方案2】:

      确保两种实现之间的操作模式(例如 CBC)和填充(例如 PKCS5)匹配。

      【讨论】:

      • 无法更改安卓代码。但是我们可以更改 Node js 代码。如果您告诉等效模式和填充,将会很有帮助。尝试了很多,但无法弄清楚。
      猜你喜欢
      • 2021-08-14
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      相关资源
      最近更新 更多