Java MessageDigest class in C#

本文关键字:in class MessageDigest Java | 更新日期: 2023-09-27 18:04:18

我需要在Java中完成的特定加密逻辑转换为c#

MessageDigest updateDigestreset函数的c#等效函数是什么?

在c#中,这个类是hashalgalgorithm。

相当于update的是TransformBlock(...)TransformFinalBlock(...),在调用最终块版本之后(您也可以使用空输入),您可以调用Hash属性,它将给您摘要值。

HashAlgorithm很可能在最后一个块被调用后被重用(这意味着它在下次调用TransformBlock时被重置),您可以通过检查属性CanReuseTransform来检查您的HashAlgorithm是否支持重用。

相当于reset()/digest()组合的是一行byte[] ComputeHash(byte[])

Java MessageDigest class in C#

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哈希?