gpt4 book ai didi

java - C#加密代码移植到Java

转载 作者:行者123 更新时间:2023-12-01 15:42:50 25 4
gpt4 key购买 nike

我正在尝试将以下代码从 C# 转换为 Java,但我得到了不同的键结果值。这是我的代码:

C#:

        plainText = "Hello World";
passPhrase = "IhDyHz6bgQyS0Ff1/1s=";
saltValue = "0A0Qvv09OXd3GsYHVrA=";
hashAlgorithm = "SHA1";
passwordIterations = 3;
initVector = "GjrlRZ6INgNckBqv";
keySize = 256;

byte[] initVectorBytes = Encoding.ASCII.GetBytes(initVector);
byte[] saltValueBytes = Encoding.ASCII.GetBytes(saltValue);

byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);

PasswordDeriveBytes password = new PasswordDeriveBytes(
passPhrase,
saltValueBytes,
hashAlgorithm,
passwordIterations);

byte[] keyBytes = password.GetBytes(keySize / 8);

Java

        byte[] password = PassPhrase.getBytes("ASCII");
byte[] salt = PKCS5S1ParametersGenerator.PKCS5PasswordToBytes(SaltValue.toCharArray());

PKCS5S1ParametersGenerator generator = new PasswordDeriveBytes(new SHA1Digest());
generator.init(password, salt, PasswordIterations);

byte[] key = ((KeyParameter)generator.generateDerivedParameters(32)).getKey();

问题是,即使两个代码提供相同的参数,我也会得到不同的 key :(仅前 4 个字节匹配)

注意: 此值已转换为 Base64:

C#: GWR/loJAuuiPvP0cuGGCVXErz16HjOZ7yQkCCHfBux4=Java: GWR/4oCT

如果我继续使用提供给generateDerivedParameters(32)的数字,它只会给我更多的字节,但仍然与.Net的结果不匹配。

我无法更改 .Net 代码,因此任何建议都必须在 Java 端完成。

提前致谢。

最佳答案

generateDerivedParameters方法说:“keySize我们想要的 key 的大小(以位为单位)”。所以你必须使用generateDerivedParameters(32 * 8)

关于java - C#加密代码移植到Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7743396/

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