php openssl_pbkdf2 在java中的等价物

我有一些 php 代码来加密发送到 webservice 的消息。现在,我想创建等效的 java 代码但卡住了。请帮忙


--PHP 代码看起来像


$length = 60;

$salt =  "MySalt";

$interation = 3000;

$bytes = openssl_pbkdf2("mypasspharse", $salt, $length, $interation, "sha1");


$value1 = substr($bytes, 0, 10);

$value2 = substr($bytes, 10, 20);

$value3 = substr($bytes, 30, 30);


return array('value1' => $value1, 'value2' => $value2, 'value3' => $value3);

——


我正在尝试使用 SecretKeyFactory 在 java 中做同样的事情。我的 Java 代码如下所示:


SecretKeyFactory factory = SecretKeyFactory

                .getInstance("PBKDF2WithHmacSHA1");

        PBEKeySpec spec = new PBEKeySpec(passphrase.toCharArray(),

                salt.getBytes("UTF-8"), interation, length);

现在我不知道如何获得等效的 $value1、$value2、$value3 作为 php 代码。另外,我不确定我是否正在使用上面的 php 代码编写等效的 java 代码的正确方法。任何想法都非常感谢。


鸿蒙传说
浏览 158回答 1
1回答

莫回无

下面的 2 个示例产生相同的输出:PHP:$length = 60;$salt =&nbsp; "MySalt";$interation = 10;$bytes = openssl_pbkdf2("mypasspharse", $salt, $length, $interation, "sha1");for ($i = 0; $i < 60; $i++){&nbsp; &nbsp; echo dechex(ord($bytes[$i]));&nbsp; &nbsp; echo '<br>';}爪哇:int length = 60 * 8;String passphrase = "mypasspharse";String salt = "MySalt";int iteration = 10;SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");PBEKeySpec spec = new PBEKeySpec(passphrase.toCharArray(), salt.getBytes("UTF-8"), iteration, length);byte[] bytes = factory.generateSecret(spec).getEncoded();for (int i = 0; i < 60; i++) {&nbsp; &nbsp; System.out.println(Integer.toHexString(bytes[i] & 0xFF));}
打开App,查看更多内容
随时随地看视频慕课网APP