首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移植到Java的C#加密代码

移植到Java的C#加密代码
EN

Stack Overflow用户
提问于 2011-10-12 16:33:14
回答 1查看 1.6K关注 0票数 0

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

C#:

代码语言:javascript
复制
        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

代码语言:javascript
复制
        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(); 

问题是,即使在这两个代码中提供了相同的参数,我也会得到不同的键:(只有前4个字节匹配)

注意:已将此值转换为Base64:

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

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

我不能更改.Net代码,所以请在Java方面做任何建议。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-12 16:46:09

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7743396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档