以下有我的一段代码.是用ASP写的,但我希望能把它翻译成C#的表达方式:
"
If Cint(Dvbbs.Forum_Setting(23))=1 Then
Randomize
Do While Len(rndnum)<8
num1=CStr(Chr((57-48)*rnd+48))
rndnum=rndnum&num1
loop
pass2 = rndnum
password=md5(rndnum,16)
Else
If Request.form("psw"&fname)="" or len(Request.form("psw"&fname))>10 or len(Request.form("psw"&fname))<6 Then
ErrCodes=ErrCodes+"<li>"+template.Strings(13)
Else
pass1=Request.form("psw"&fname)
End If
If Request.form("pswc"&fname)="" or strLength(Request.form("pswc"&fname))>10 or len(Request.form("pswc"&fname))<6 Then
ErrCodes=ErrCodes+"<li>"+template.Strings(13)
Else
pass2=Request.form("pswc"&fname)
End If
If pass1<>pass2 Then
ErrCodes=ErrCodes+"<li>"+template.Strings(29)
Else
password=md5(pass2,16)
End If
End If
"
这个是ASP写的一个注册的加密密码代码,我希望哪位懂ASP和c#的高手能帮忙翻译一下.翻译过来的MD5加密要求和以上ASP的加密结果一样. 我对它做了相应的修改,但是得到的加密结果不一样,最开始是位数不一样,后来位数一样了,但加密的结果还是不同.分不多,但希望高手还是能帮忙解决!
"
If Cint(Dvbbs.Forum_Setting(23))=1 Then
Randomize
Do While Len(rndnum)<8
num1=CStr(Chr((57-48)*rnd+48))
rndnum=rndnum&num1
loop
pass2 = rndnum
password=md5(rndnum,16)
Else
If Request.form("psw"&fname)="" or len(Request.form("psw"&fname))>10 or len(Request.form("psw"&fname))<6 Then
ErrCodes=ErrCodes+"<li>"+template.Strings(13)
Else
pass1=Request.form("psw"&fname)
End If
If Request.form("pswc"&fname)="" or strLength(Request.form("pswc"&fname))>10 or len(Request.form("pswc"&fname))<6 Then
ErrCodes=ErrCodes+"<li>"+template.Strings(13)
Else
pass2=Request.form("pswc"&fname)
End If
If pass1<>pass2 Then
ErrCodes=ErrCodes+"<li>"+template.Strings(29)
Else
password=md5(pass2,16)
End If
End If
"
这个是ASP写的一个注册的加密密码代码,我希望哪位懂ASP和c#的高手能帮忙翻译一下.翻译过来的MD5加密要求和以上ASP的加密结果一样. 我对它做了相应的修改,但是得到的加密结果不一样,最开始是位数不一样,后来位数一样了,但加密的结果还是不同.分不多,但希望高手还是能帮忙解决!
解决方案 »
- 关于VS2010中控件的事件绑定与数组元素选定下标值的判断???
- 请教下这种格式是怎么生成的
- 如何让系统提示安装补丁???
- C#如何实现,在20个数字中随机选出5个出来
- 如何窗体间的互访问
- 求Soket通讯相关资料
- C#中DataGrid邦定后,怎么会在DataGrid最左边出现+号,Table等东东?如何屏蔽这两个东东?
- 请问Directory.CreateDirectory,怎样在另外一台服务器上创建目录
- TreeView难题
- 托管的 PInvoke 签名与非托管的目标签名不匹配
- 模仿QQ加入表情图片,richtext 添加图片以后,怎样读取呢?
- messagebox.show()的小问题
或
using System.Security.Cryptography; public static string MD5_32(string value)
{
byte[] bytes = Encoding.ASCII.GetBytes(value);
byte[] hashvalue = (CryptoConfig.CreateFromName("MD5") as HashAlgorithm).ComputeHash(bytes); StringBuilder text = new StringBuilder();
for (int i = 0; i < 16; i++)
text.Append(hashvalue[i].ToString("x").PadLeft(2,'0')); return text.ToString();
}
{
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] data = md5.ComputeHash(Encoding.Default.GetBytes(strInput));//data是不是你要的?
StringBuilder sb = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sb.Append(data[i].ToString("X2"));
}
return sb.ToString();//返回值是不是你要的?
}
上面是自己写得MD5函数,.net类库用来非常简单,不过不知道你的asp程序里的参数定义,尤其是那第二个参数16不太确定。
我这里用的MD5.asp输出32个字符,和我这个函数的输出一致。
你呀,跟踪调试一下,加个断点,就知道那个地方的输出是你要的就行了。
你的asp程序部分,很好改,基本就是语法转换,没有难度的
private static byte[] MD5hash(byte[] data)
{
// This is one implementation of the abstract class MD5.
MD5 md5 = new MD5CryptoServiceProvider(); byte[] result = md5.ComputeHash(data); return result;
} #region 加密密码
/// <summary>
/// 加密密码MD5
/// </summary>
public static string EncryptPassWord(string parpass)
{
string enpassword = ""; byte[] b = System.Text.Encoding.Default.GetBytes(parpass);
byte[] c = MD5hash(b);
for (int i = 0; i < c.Length; i++)
{
enpassword += c[i].ToString("x").PadLeft(2, '0');
} return enpassword;
}
#endregion.net 2.0
这个md5的方法里面才是md5的核心,你这个没有贴出来如果你想用.net实现md5加密的话,.net自带了类库就可以实现System.Security.Cryptography 查msdn