Java MessageDigest class in C#
本文关键字:in class MessageDigest Java | 更新日期: 2023-09-27 18:04:18
我需要在Java中完成的特定加密逻辑转换为c#
MessageDigest update、Digest和reset函数的c#等效函数是什么?
在c#中,这个类是hashalgalgorithm。
相当于update的是TransformBlock(...)
或TransformFinalBlock(...)
,在调用最终块版本之后(您也可以使用空输入),您可以调用Hash
属性,它将给您摘要值。
HashAlgorithm
很可能在最后一个块被调用后被重用(这意味着它在下次调用TransformBlock
时被重置),您可以通过检查属性CanReuseTransform
来检查您的HashAlgorithm
是否支持重用。
相当于reset()/digest()组合的是一行byte[] ComputeHash(byte[])
。
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(password.getBytes());
BigInteger hash = new BigInteger(1, md.digest());
hashword = hash.toString(16);
} catch (NoSuchAlgorithmException ex) {
/* error handling */
}
return hashword;
public static string HashPassword(string input)
{
var sha1 = SHA1Managed.Create();
byte[] inputBytes = Encoding.ASCII.GetBytes(input);
byte[] outputBytes = sha1.ComputeHash(inputBytes);
return BitConverter.ToString(outputBytes).Replace("-", "").ToLower();
}
对于c#中的Digest,类似于Java,您可以使用类windows . security . cryptographic . core。例如,下面的方法返回一个以base64格式化的SHA256哈希:
public static string sha256Hash(string data)
{
// create buffer and specify encoding format (here utf8)
IBuffer input = CryptographicBuffer.ConvertStringToBinary(data,
BinaryStringEncoding.Utf8);
// select algorithm
var hasher = HashAlgorithmProvider.OpenAlgorithm("SHA256");
IBuffer hashed = hasher.HashData(input);
// return hash in base64 format
return CryptographicBuffer.EncodeToBase64String(hashed);
}
参见(mbrit):如何在WinRT中创建SHA-256哈希?