【问题标题】:Hash value of same string is different in Android and JavascriptAndroid和Javascript中相同字符串的哈希值不同
【发布时间】:2017-03-16 05:10:02
【问题描述】:

对于 SHA-256,相同字符串的哈希值在 Javascript 和 Android 中是不同的:

Javascript 代码:

var hashedPassword = CryptoJS.SHA256(userPassword);
var passwordText = hashedPassword.toString(CryptoJS.enc.Base64);

安卓代码:

MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
byte[] hashedPassword = messageDigest.digest(userPassword.getBytes());
String hashedPasswordText = Base64.encodeToString(hashedPassword, Base64.DEFAULT).trim();

字符串“野兽”的输出:

在 Javascript 中:

1bf417bd87162d5d77a5ce3259e81bdee9f8a0ef56bc0f12eadcd5805a94b708

在安卓中:

G/QXvYcWLV13pc4yWegb3un4oO9WvA8S6tzVgFqUtwg=

【问题讨论】:

  • 您的 Javascript 输出字符串看起来像 Base16,而不是 Base64。事实上,它们在转换后是相同的。

标签: javascript android sha256


【解决方案1】:

根据this answer CryptoJS.enc.Base64 需要另一个组件。如果它没有找到它,它默认为 HEX。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-09
    • 2021-09-21
    • 1970-01-01
    • 2011-11-12
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多