Вопрос:

Как преобразовать код шифрования Java AES ECB в Nodejs

java node.js aes cryptojs ecb

29 просмотра

1 ответ

1051 Репутация автора

У меня есть код в Java для шифрования

public String encrypt() throws Exception {
    String data = "Hello World";
    String secretKey = "j3u8ue8xmrhsth59";
    byte[] keyValue = secretKey.getBytes();
    Key key = new SecretKeySpec(keyValue, "AES");
    Cipher c = Cipher.getInstance("AES");
    c.init(Cipher.ENCRYPT_MODE, key);
    byte[] encVal = c.doFinal(StringUtils.getBytesUtf8(data));
    String encryptedValue = Base64.encodeBase64String(encVal);
    return encryptedValue;
}

Он возвращает то же значение (например, 5pK6F867tyDhBdfRkJuA ==), что и инструмент здесь введите описание изображения здесь

Я преобразовал код в Nodejs (крипто)

var crypto = require('crypto')

encrypt(){
      var data = "Hello World"
      var cipher = crypto.createCipher('aes-128-ecb','j3u8ue8xmrhsth59')
      var crypted = cipher.update(data,'utf-8','base64')
      crypted += cipher.final('base64')
      return crypted;
}

Но это дает другое значение (POixVcNnBs3c8mwM0lcasQ ==)

Как получить одинаковое значение от обоих? Чего мне не хватает?

Автор: Abhishek Kumar Источник Размещён: 11.08.2019 06:05

Ответы (1)


0 плюса

1051 Репутация автора

Благодаря Дэйву, теперь я получаю одинаковый результат как для Java, так и для JavaScript.

var crypto = require('crypto')

encrypt(){
      var data = "Hello World"
      var iv = new Buffer(0);
       const key = 'j3u8ue8xmrhsth59'
      var cipher = crypto.createCipheriv('aes-128-ecb',new Buffer(key),new Buffer(iv))
      var crypted = cipher.update(data,'utf-8','base64')
      crypted += cipher.final('base64')
      return crypted;
}
Автор: Abhishek Kumar Размещён: 11.08.2019 08:13
Вопросы из категории :
32x32