【发布时间】:2018-08-16 12:56:33
【问题描述】:
我在 Java 中有以下代码。
String secretString = 'AAABBBCCC'
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom securerandom = SecureRandom.getInstance("SHA1PRNG");
securerandom.setSeed(secretString.getBytes());
kgen.init(256, securerandom);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Security.addProvider(new BouncyCastleProvider());
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] byteContent = content.getBytes("utf-8");
byte[] cryptograph = cipher.doFinal(byteContent);
String enc1 = Base64.getEncoder().encodeToString(cryptograph);
return enc1;
我需要在 JavaScript/Node.js 中实现它,但是我只能在 js 中找出后半部分,如下所示
'use strict';
const crypto = require('crypto');
const ALGORITHM = 'AES-256-ECB';
const secretString = 'AAABBBCCC'
// missing part in JS (how to convert secretString to key)
function encrypt(plaintext, key) {
const cipher = crypto.createCipheriv(ALGORITHM, key, Buffer.alloc(0));
return cipher.update(plaintext, 'utf8', 'base64') + cipher.final('base64');
}
对于前面的Java部分(KeyGenerator生成的secretString到key),不知道怎么用JavaScript实现,我也不知道 JavaScript 世界中是否有像 KeyGenerator 这样的东西可以帮助我完成繁重的工作。
【问题讨论】:
-
您是否只是尝试在 JavaScript 中生成密钥?
-
是的,但是如果我需要像在 Java 中一样获得相同的密钥,我不太明白如何在 JS 中执行此操作。
-
@miradham 是的,它有帮助,但不能完全涵盖我的问题,我已在您发布的链接中添加了评论。谢谢。
标签: javascript java node.js encryption