C# 基于字符串生成/加密唯一密钥(如Windows Azure存储密钥)

C# 基于字符串生成/加密唯一密钥(如Windows Azure存储密钥),c#,azure-storage,C#,Azure Storage,我希望生成一个唯一密钥,就像Azure为存储帐户所做的那样: 这是一个关键的例子 XrmGWqu9qpgKX5G3lf+V5Bc0nFIGjGWiWhHTdMxkA5Mb4WjJ0rDV+3USWW/6fAWCrszrkr2+JUb1c5mxQdq4nw== 我根据评论更改了问题,因为问题不太清楚。我设法做了一些事情: using (RandomNumberGenerator random = RandomNumberGenerator.Create()) { byte[] n

我希望生成一个唯一密钥,就像Azure为存储帐户所做的那样:

这是一个关键的例子

XrmGWqu9qpgKX5G3lf+V5Bc0nFIGjGWiWhHTdMxkA5Mb4WjJ0rDV+3USWW/6fAWCrszrkr2+JUb1c5mxQdq4nw==

我根据评论更改了问题,因为问题不太清楚。

我设法做了一些事情:

 using (RandomNumberGenerator random = RandomNumberGenerator.Create())
 {
     byte[] number = new byte[64];
     random.GetBytes(number);

     string val = Convert.ToBase64String(number);
 }
结果是这样的:

ZdhaqQoNscMrfLFy0U6tLuyPXvIrM0mn0F+dLbqcImUknJOFCPLZAcFw+paEYs0jMnyC6mee75j6IpCNAQyUfw==

如果希望输出不同且始终唯一,为什么不使用GUID呢?它应该基于相同的字符串值生成。示例用户名可能是一个电子邮件地址,然后我想基于该电子邮件地址生成一个唯一的密钥,并能够重新生成它。如果输出总是不同,为什么要基于某个东西?要么你想要一些确定性的东西,在这种情况下,输出是相同的,输入是相等的,要么你想要一些随机的东西,在这种情况下,输入并不重要。将当前时间(以毫秒为单位)连接到用户名并执行MD5,现在我不想使用GuidOk,因为我发现我的问题不太清楚。。。