C#生成随机的Md5哈希值

10
如何在C#中生成随机的MD5哈希值?

3
创建随机字符串并生成其md5值。但你为什么需要这样的东西呢?如果你想要唯一标识符,只需使用Guid即可。 - Stecya
如何创建一个随机字符串? - Sudantha
为什么有人需要创建随机MD5哈希?任何长度为128的字符串都可以成为一个随机的MD5哈希(至少我认为是这样的)。 - crypted
@Sudantha - 请查看此答案 https://dev59.com/C3NA5IYBdhLWcg3wBpBm#1122519 - Stecya
5
@Int3:不,那不正确。MD5哈希值只包含数字和字符a、b、c、d、e和f(十六进制)。 - Marius Schulz
3个回答

25

一个随机的MD5哈希值实际上只是一个128位的加密强度随机数。

var bytes = new byte[16];
using (var rng = new RNGCryptoServiceProvider())
{
    rng.GetBytes(bytes);
}

// and if you need it as a string...
string hash1 = BitConverter.ToString(bytes);

// or maybe...
string hash2 = BitConverter.ToString(bytes).Replace("-", "").ToLower();

24

您可以使用Guid.NewGuid()创建一个随机字符串,并生成其MD5校验和。


3
尽管Guid是128位的随机值,但有6位是预定义的。因此,即使进行哈希运算,你也只会得到2^122种不同的哈希值。如果使用RNGCryptoServiceProvider,你将获得全部2^128个值。事实上,Guid在内部也使用RNGCryptoServiceProvider。 - Artemix
我很抱歉,Guid.NewGuid()并不是随机的。 - Yini

4
using System.Text;
using System.Security.Cryptography;

  public static string ConvertStringtoMD5(string strword)
{
    MD5 md5 = MD5.Create();
    byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(strword);
    byte[] hash = md5.ComputeHash(inputBytes);
    StringBuilder sb = new StringBuilder();
        for (int i = 0; i < hash.Length; i++)
       { 
            sb.Append(hash[i].ToString("x2"));
       }
       return sb.ToString();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接