gpt4 book ai didi

javascript - 在 Javascript 中加密以匹配 Java

转载 作者:行者123 更新时间:2023-11-30 14:58:35 24 4
gpt4 key购买 nike

我正在尝试编写 Javascript 来匹配此 Java 代码的输出:

Java:

import java.util.Base64;

public class Enc2 {
public static void main (String[] arg) {
System.out.println(encryptSomeNumber("1234567812345678"));
}

public static String encryptSomeNumber(final String SomeNumber){
String encryptedSomeNum = "";
String ALGO = "AES";

try {
String myKey = "DLDiGPqGysAow3II";
byte[] keyBytes = myKey.getBytes("UTF-8");

java.security.Key encryptkey = new javax.crypto.spec.SecretKeySpec(keyBytes, ALGO);
javax.crypto.Cipher c;
c = javax.crypto.Cipher.getInstance(ALGO);
c.init(javax.crypto.Cipher.ENCRYPT_MODE, encryptkey);
byte[] encVal = c.doFinal(SomeNumber.getBytes());

byte[] encodedBytes = Base64.getEncoder().encode(encVal);
String s = new String(encodedBytes);

encryptedSomeNum = s;
} catch (Exception e) {
System.out.println("error when encrypting number");
return encryptedSomeNum;
}
return encryptedSomeNum;
}
}

输出:Wrs66TuAIxYe+M4fqyyxtkyMFkWGwx9i45+oQfEA4Xs=

我目前拥有的 Javascript(nodeJS v8.7.0):

let crypto = require('crypto');

let algorithm = 'aes-128-ecb';
let password = 'DLDiGPqGysAow3II';

function encrypt(buffer){
let cipher = crypto.createCipher(algorithm, password)
let crypted = Buffer.concat([cipher.update(buffer), cipher.final()]);
return crypted;
}

let cyphertext = encrypt(new Buffer("1234567812345678", "utf8"))
console.log(cyphertext.toString('base64'));

输出:m1jnKjBbKu+m/zsf9DBTMo3NL4E035l0EailFjt/qjo=

任何人都可以看到我在这里缺少什么吗?有 PKCS 填充的东西吗?

最佳答案

不,填充是相同的。问题是有两个 createCipher 方法。一种是使用密码和基于密码的 key 派生函数——这就是您现在使用的。另一个使用 key 和 IV。当然,ECB 不使用 IV,因此您可能必须提供一个 IV 值,然后不使用。

关于javascript - 在 Javascript 中加密以匹配 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46877269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com