簡體   English   中英

SHA256 hash smillar to.Net hash

[英]SHA256 hash smillar to .Net hash

我正在做一個 Oauth 應用程序,其中 hash 是通過.Net 應用程序計算的,以下是計算 hash 的.Net 代碼

public static string GetBase64CodeChallange(string str)
{
    using (SHA256 sha256Hash = SHA256.Create())
    {
        byte[] challengeBytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(str));

        string s = Convert.ToBase64String(challengeBytes);
        s = s.Split('=')[0];
        s = s.Replace('+', '-');
        s = s.Replace('/', '_');
        return s;
    }
}

我想要 android 中的類似版本。 我圍繞 web 進行了研發,但還沒有相同的解決方案。 遵循產生不同結果的 java 代碼。 android版本字符串需要與.Net版本一致。

String str1 = "str";
            String outHash = "95e5f0b6988ec703e832172f70ce7dc7";
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                byte[] array = md.digest(str1.getBytes("UTF-8"));
                StringBuilder sb = new StringBuilder();
                for (byte b : array) {
                    sb.append(String.format("%02X", b));
                }
                System.out.println(sb.toString());
                System.out.println(sb.toString().equalsIgnoreCase(outHash));
            } catch (Exception e) {
                e.printStackTrace();
            }

Android - Java代碼

請幫忙

很難測試,因為您只需要弄錯一件事,而 hash 則完全不同,因為它們就是這樣設計的。 在它完全正確之前,你永遠不會想到“我越來越近了”。

確保在 byteArray 上使用相同的編碼,使用相同的散列算法(此處的 .NET 示例是 SHA-256,您的 Java 是 MD5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM