下面是一个md5算法
}
}
这个是C#中的,web中的FormsAuthentication.HashPasswordForStoringInConfigFile(字符串,"MD5")也可以实现,还有利用C#中函数实现的
}
但是我在做支付宝在线支付的时候使用中文老提示错误,就是算法对中文不太支持,于是我转换为utf-8后再编码问题依然在,但使用vbscript的这个算法问题就解决了。
后来我对比了一下Gb2312和GBK的字符表,就发现还是编码查找方式不同而引发的问题,现在正在研究C#中支持GBK编码的方法。
下面这个是VB.Net中的使用函数的实现办法
Dim md5 As New MD5CryptoServiceProvider
Dim username As Byte() = (New ASCIIEncoding).GetBytes(TextBox1.Text)
Dim mdString As String, mdString1 As String, mdString2 As String
Dim i As Integer
'转换为哈希值Byte数组
Dim mdByte As Byte() = md5.ComputeHash(username)
mdString = System.BitConverter.ToString(mdByte)
For i = 1 To 15
mdString = mdString.Substring(0, 2 * i) & mdString.Substring(3 + 2 * (i - 1), 47 - i * 3)
Next
'mdString = System.BitConverter.ToString(mdByte)
'mdString = (New ASCIIEncoding).GetString(mdByte)
TextBox2.Text = mdString
Dim username As Byte() = (New ASCIIEncoding).GetBytes(TextBox1.Text)
Dim mdString As String, mdString1 As String, mdString2 As String
Dim i As Integer
'转换为哈希值Byte数组
Dim mdByte As Byte() = md5.ComputeHash(username)
mdString = System.BitConverter.ToString(mdByte)
For i = 1 To 15
mdString = mdString.Substring(0, 2 * i) & mdString.Substring(3 + 2 * (i - 1), 47 - i * 3)
Next
'mdString = System.BitConverter.ToString(mdByte)
'mdString = (New ASCIIEncoding).GetString(mdByte)
TextBox2.Text = mdString
现在动网论坛也使用的比较多,它使用的16位的MD5加密方式,从上面的加密算法我们可以看到它是由4组8位的密码组成,而16位就是取其中的2组合并的,不同的设置就取不同位置的密码来组合,下面是在外部插入动网数据库生成随机密码的代码。
public string createpass()
{
int Ran,LengthNum=16;
string Createpass="";
for(int i=1;i<LengthNum;i++)
{
Random ram=new Random();
Ran = Convert.ToInt32(ram.NextDouble() * 2);
if(Ran== 0)
{
Ran =Convert.ToInt32(ram.NextDouble() * 25) + 97;
Createpass =Createpass+Convert.ToString(Convert.ToChar(Ran)).ToUpper();
}
else if(Ran == 1)
{
Ran = Convert.ToInt32(ram.NextDouble() * 9);
Createpass = Createpass + Ran;
}
else if(Ran == 2)
{
Ran = Convert.ToInt32(ram.NextDouble() * 25) + 97;
Createpass =Createpass+Convert.ToString(Convert.ToChar(Ran));
}
}
return Createpass;
}
{
int Ran,LengthNum=16;
string Createpass="";
for(int i=1;i<LengthNum;i++)
{
Random ram=new Random();
Ran = Convert.ToInt32(ram.NextDouble() * 2);
if(Ran== 0)
{
Ran =Convert.ToInt32(ram.NextDouble() * 25) + 97;
Createpass =Createpass+Convert.ToString(Convert.ToChar(Ran)).ToUpper();
}
else if(Ran == 1)
{
Ran = Convert.ToInt32(ram.NextDouble() * 9);
Createpass = Createpass + Ran;
}
else if(Ran == 2)
{
Ran = Convert.ToInt32(ram.NextDouble() * 25) + 97;
Createpass =Createpass+Convert.ToString(Convert.ToChar(Ran));
}
}
return Createpass;
}
这里是一个朋友的加密成字符密码的算法
}
}
其实密码就是几种情况,位移,叠加,无非就是多几次,以及加减乘除的内容。最近在弄md5密码数据库,程序弄好勒,结果一运行机器死了,内存暴涨,最后还是算勒,呵呵。