我已經在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
粘貼輸出時出現了一些問題。更正它。 –