public static String getSHA256(String str)
{
MessageDigest messageDigest;
String encodestr = "";
try
{
messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
encodestr = byte2Hex(messageDigest.digest());
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
return encodestr;
}
以上是一個java的類。
我這邊是c#,.net framework,需要post一個介面,介面是java實作的。但是傳參中發現,有個引數是需要加密的,使用的就是如上所示的一個類。目前我就卡在messageDigest.digest()這里。sha256這些都有類似的方式可以實作。但是我找了很久,沒有找倒messageDigest.digest()在c#中的實作方式。
各位大佬,誠心求教,小子萬分感激。
uj5u.com熱心網友回復:
String encodestr = "";
using (SHA256 mySHA256 = SHA256.Create())
{
// Compute and print the hash values for each file in directory.
try
{
byte[] hashValue = mySHA256.ComputeHash(Encoding.UTF8.GetBytes(str));
foreach(byte b in hashValue)
{
encodestr += b.ToString("X2");
}
Console.WriteLine(encodestr);
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine($"Access Exception: {e.Message}");
}
uj5u.com熱心網友回復:
foreach(byte b in hashValue)
{
encodestr += b.ToString("X2");
}
可以換成
Convert.ToHexString(hashValue)
uj5u.com熱心網友回復:
需要.net 5.0
uj5u.com熱心網友回復:
請問大佬,是否需要考慮JAVA和C#的byte[],范圍不一樣呢?因為java的byte是-128-127
uj5u.com熱心網友回復:
16進制是一樣的
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/238855.html
標籤:C#
上一篇:C#獲取windows系統的圖示
