【发布时间】:2017-09-30 06:16:49
【问题描述】:
我在 SO 中检查了类似的问题,但没有一个可以回答我的问题,所以在这里发布我的问题。 在我的代码中进行第三方 API 调用之前,我需要为密码生成原始 SHA。 我正在使用 apache 编解码器库中的 DigestUtils。以下是java代码
public static String sha1 (String input)
throws NoSuchAlgorithmException,
UnsupportedEncodingException {
return new String(DigestUtils.sha(input));
}
// I suppose this gives me raw SHA.
PHP 代码(我在 google 中获得)如下
$passwordSha = sha1($password, true);
// The boolean value gives the SHA in binary format.
对于输入 "PASSWORD" ,以下是输出
JAVA : "+��0G���i.)�\�I�_�7"
PHP : "+��0G���i.)�\�I�_�7"
我不确定比较这些垃圾值是否正确,但是,我生成的最终密码摘要取决于上述代码,在 PHP 和 JAVA 中是不同的。 (在 PHP 中获得正确的价值)。
请帮助我了解在 PHP 和 JAVA 中生成原始 SHA1 的区别。
更新
编辑了输出。我的坏..
针对不同输入的更多结果
输入:“secretnonce101112015-09-30T14:12:15Z��a����`�t�.�^X�”
JAVA : "�s�� ���A�M��;���*"
PHP : "���i>�рq��������"
我在 java 输出中看到了一些额外的字符。不确定这是否会破坏我的最终密码摘要。
【问题讨论】:
-
将随机字节转换为
String是非常没用的。十六进制字符串更具可读性。但是你的意思是什么,你从两个系统中得到相同的值,所以......? -
粘贴输出时出现问题。已更正。