【发布时间】:2020-08-01 00:06:42
【问题描述】:
我正在做一个 Oauth 应用程序,其中部分哈希是通过 .Net 应用程序计算的,以下是计算哈希的 .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 版本。我在网络上进行了研发,但还没有相同的解决方案。遵循产生不同结果的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 代码
请帮忙
【问题讨论】:
-
如果你只想要base64url而不需要从android上的字节数组填充检查
this
标签: java android .net sha256 message-digest