【发布时间】:2012-02-26 06:45:04
【问题描述】:
这是我的方法:
public static string GenerateRandomString(int bytes)
{
var rng = new RNGCryptoServiceProvider();
var randomBytes = new byte[bytes];
rng.GetBytes(randomBytes);
return Convert.ToBase64String(randomBytes);
}
生成的每个值:
即:
Qcr6OgNxkGzVebNl00Dtk7yCaz64owUx7pKEhl1Ogn4=
IGFLQB0OrReDB3P6nuZgqZIkTwTtch9Fk3Rx/DL4CgI=
UAJwLwIPYEJ9SzMAK/EMiUJ/DHhmfy6UVMM5MU6Dcpg=
总是以“=”结尾——这是为什么?
我将此作为密码重置电子邮件的随机字符串发送,但我遇到了 Microsoft Outlook 未在链接末尾选择 = 的问题。有没有人知道在不简单地切断字符串的最后一个字符的情况下解决这个问题的方法?
【问题讨论】:
-
记住 - RNGCryptoServiceProvider 没有返回字符串;它是一系列字节 - '=' 是 base 64 编码的一个方面;通过维基百科运行它en.wikipedia.org/wiki/Base64
标签: c# cryptography passwords base64 password-protection