// add the salt to the hash byte[] rawSalted = new byte[unsaltedPassword.Length + saltValue.Length]; unsaltedPassword.CopyTo(rawSalted,0); saltValue.CopyTo(rawSalted,unsaltedPassword.Length);
//Create the salted hash System.Security.Cryptography.SHA1 sha1 = System.Security.Cryptography.SHA1.Create(); byte[] saltedPassword = sha1.ComputeHash(rawSalted); // add the salt value to the salted hash byte[] dbPassword = new byte[saltedPassword.Length + saltValue.Length];
这个会生成很长的一段数字,你可以将他转化为字符串,截取其后面的8位(一定要后面的8位),因为前面的数字基本上变化很慢。
Random 成员 | System 命名空间 | Random 成员(Visual J# 语法) | C++ 托管扩展编程
要求
命名空间: System平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版 - Windows CE .NET程序集: Mscorlib (在 Mscorlib.dll 中)
语言
C#C++JScriptVisual Basic全部显示
表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。有关此类型所有成员的列表,请参阅 Random 成员。System.Object
System.Random[Visual Basic]
<Serializable>
Public Class Random[C#]
[Serializable]
public class Random[C++]
[Serializable]
public __gc class Random[JScript]
public
Serializable
class Random线程安全
此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。备注
伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,因为它们是用一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已足够了。随机数的生成是从种子值开始。如果反复使用同一个种子,就会生成相同的数字系列。产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列。要提高性能,请创建一个 Random,以便随着时间的推移可以生成很多随机数,而不要重复新建 Random 来生成一个随机数。例如,要生成适合于创建随机密码的加密安全随机数,请使用从 System.Security.Cryptography.RandomNumberGenerator 派生的类,如 System.Security.Cryptography.RNGCryptoServiceProvider。要求
命名空间: System平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版 - Windows CE .NET程序集: Mscorlib (在 Mscorlib.dll 中)请参见
Random 成员 | System 命名空间 | Random 成员(Visual J# 语法) | C++ 托管扩展编程
--------------------------------------------------------------------------------发送有关此主题的意见 © 2001-2002 Microsoft Corporation。保留所有权利。
{
// 在此处放置用户代码以初始化页面
string s=get_random();
this.Response .Write ("<script>window.alert('"+s+"')</script>"); }
private string get_random()
{
int number;
char code;
string checkCode = String.Empty;
System.Random random = new Random();
for(int i=0; i<8; i++)
{
number = random.Next(); if(number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26)); checkCode += code.ToString();
} return checkCode;
}
{
string s="1234567890";
Random rnd = new Random();
int pwdlen = 8;//生成的位数
string pwdchars = s; string password = "";
int iRandNum;
for(int i=0; i < pwdlen; i++)
{
iRandNum = rnd.Next(pwdchars.Length);
password += pwdchars[iRandNum];
}
password="#"+password;
return password;
}
你要是只要数字
private string get_random(){
int number;
char code;
string checkCode = String.Empty;
System.Random random = new Random();for(int i=0; i<8; i++)
{
number = random.Next();
code = (char)('0' + (char)(number % 10));checkCode += code.ToString();
}return checkCode;
}这样就行.......
this.Response .Write ("<script>window.alert('"+s+"')</script>");}
private string get_random()
{
int number;
char code;
string checkCode = String.Empty;
System.Random random = new Random();
for(int i=0; i<8; i++)
{
number = random.Next();if(number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));checkCode += code.ToString();
} return checkCode;
}
用了boytomato(深爱一人叫颖的女孩!) 的方法
但我批生成2000的密码时候, 有好多是相同的密码啊 (一般是连续几个)
请问还有好的 算法吗?
多谢了!~~
怎么写呀
byte[] rawSalted = new byte[unsaltedPassword.Length + saltValue.Length];
unsaltedPassword.CopyTo(rawSalted,0);
saltValue.CopyTo(rawSalted,unsaltedPassword.Length);
//Create the salted hash
System.Security.Cryptography.SHA1 sha1 = System.Security.Cryptography.SHA1.Create();
byte[] saltedPassword = sha1.ComputeHash(rawSalted); // add the salt value to the salted hash
byte[] dbPassword = new byte[saltedPassword.Length + saltValue.Length];
Guid.NewGuid.ToString()
MSDN中你可以找找。
GUID = System.GUID.NewGuid().ToString()
End Function