我已经在SO中检查过类似的问题,但没有人能回答我的问题,所以在此发布我的问题。 在我的代码中进行第三方API调用之前,我需要为密码生成原始SHA。 我使用的是存在于apache编解码库中的DigestUtils。以下是Java代码java中的原始SHA1与PHP中的原始SHA1不匹配
public static String sha1 (String input)
throws NoSuchAlgorithmException,
UnsupportedEncodingException {
return new String(DigestUtils.sha(input));
}
// I suppose this gives me raw SHA.
而且PHP代码(我在谷歌获得)如下
$passwordSha = sha1($password, true);
// The boolean value gives the SHA in binary format.
对于输入的 “密码”,下面是输出
JAVA : "+��0G���i.)�\�I�_�7"
PHP : "+��0G���i.)�\�I�_�7"
我不知道是否比较这些垃圾值是正确的,但是我生成的最终密码摘要,依赖于上面的代码在PHP和JAVA中是不同的。 (在PHP中获得正确的值)。
请帮助我了解在生成原始SHA1在PHP和JAVA中的差异。
UPDATE
编辑输出。我的坏..
一些更针对不同的输入
输入的结果: “secretnonce101112015-09-30T14:12:15Za`t^X”
JAVA: “S AM; *”
PHP: “我>рq”
我在java输出中看到一些额外的字符。不知道这是否毁了我的最终密码摘要。
将随机字节转换为“String”是非常没用的。十六进制字符串更具可读性。但是你的意思是,你从这两个系统获得相同的值,所以......? – Kayaman
粘贴输出时出现了一些问题。更正它。 –