/// <summary> /// MD5函数 /// </summary> /// <param name="str">原始字符串</param> /// <returns>MD5结果</returns> public static string MD5(string str) { byte[] b = Encoding.Default.GetBytes(str); b = new MD5CryptoServiceProvider().ComputeHash(b); string ret = ""; for (int i = 0; i < b.Length; i++) ret += b[i].ToString("x").PadLeft(2, '0'); return ret; }
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider(); byte[] hashedBytes = null; UTF8Encoding encoder = new UTF8Encoding(); hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(txtPwd.Text));
using System.Security.Cryptography; public static string encryptPassword(string xPwd) { byte[] data = new byte[xPwd.Length]; int i = 0; foreach (char c in xPwd.ToCharArray()) { data[i] = Convert.ToByte(c); i++; } MD5 md5 = new MD5CryptoServiceProvider(); byte[] result = md5.ComputeHash(data); return Convert.ToBase64String(result); } 要添加引用
/// MD5函数
/// </summary>
/// <param name="str">原始字符串</param>
/// <returns>MD5结果</returns>
public static string MD5(string str)
{
byte[] b = Encoding.Default.GetBytes(str);
b = new MD5CryptoServiceProvider().ComputeHash(b);
string ret = "";
for (int i = 0; i < b.Length; i++)
ret += b[i].ToString("x").PadLeft(2, '0');
return ret;
}
public class Encrypt_Decrypt
{
//对密码进行MD5加密的函数(添加盐值:&%#@?,:*)
public string getEncryPassword(string Password)
{
string EncryedPassword=FormsAuthentication.HashPasswordForStoringInConfigFile(
Password+"&%#@?,:*", "md5"); // Or "sha1"
return EncryedPassword;
}
// 加密
public string EncryptText(String strText)
{
return Encrypt(strText, "&%#@?,:*");
// return Encrypt(strText,DateTime.Now.ToString() );
} //'解密
public String DecryptText(String strText)
{
return Decrypt(strText, "&%#@?,:*");
// return Decrypt(strText,DateTime.Now.ToString());
}
//'加密函数
private String Encrypt(String strText, String strEncrKey)
{
Byte[] byKey = {};
Byte[] IV = { 0x01, 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
try
{
byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] inputByteArray = Encoding.UTF8.GetBytes(strText);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch(Exception ex)
{
return ex.Message;
}
} //'解密函数
private String Decrypt(String strText, String sDecrKey)
{
char[] stBase=strText.ToCharArray();
for (int i = 0; i < stBase.Length; i++)
{
if (stBase[i] ==' ')
{
stBase[i] = '+';
}
}
strText = "";
for (int i = 0; i < stBase.Length; i++)
{
strText += stBase[i];
}
Byte[] byKey = {};
Byte[] IV = { 0x01,0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};
Byte[] inputByteArray = new byte[strText.Length];
try
{
byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
inputByteArray = Convert.FromBase64String(strText);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
return encoding.GetString(ms.ToArray());
}
catch(Exception ex)
{
return ex.Message;
}
}
}
这个是加密和解密类.
把密码加密存储到数据库中.
EncryptText(密码)
解密
DecryptText(字符串)
select pwdencrypt('jinjazz')
select pwdcompare('jinjazz', convert(varbinary(255), pwdencrypt('jinjazz')), 0)
select pwdcompare('jinjazz1',convert(varbinary(255), pwdencrypt('jinjazz')), 0)
/// MD5加密函数
/// </summary>
/// <param name="str_text">原始字符串</param>
/// <returns>MD5结果</returns>
public static string UserMD5(string str_text)
{
MD5 md5 = new MD5CryptoServiceProvider();
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(tbpwd.Text.Trim(), "md5"); 出错在这里 byte[] srctext = Encoding.Unicode.GetBytes(str_text);
byte[] tartext = md5.ComputeHash(srctext);
string str = "";
for (int i = 0; i < tartext.Length; i++)
{
str += tartext[i].ToString("x").PadLeft(2,'0');
}
return str;
}
这样对么
但是还是怎么加密不了呢。。
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
byte[] hashedBytes = null;
UTF8Encoding encoder = new UTF8Encoding();
hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(txtPwd.Text));
using System.Security.Cryptography;
public static string encryptPassword(string xPwd)
{
byte[] data = new byte[xPwd.Length];
int i = 0;
foreach (char c in xPwd.ToCharArray())
{
data[i] = Convert.ToByte(c);
i++;
} MD5 md5 = new MD5CryptoServiceProvider(); byte[] result = md5.ComputeHash(data);
return Convert.ToBase64String(result);
} 要添加引用
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
string strConvert = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(strPassword)),0);
strConvert = strConvert.Replace("-","");
return strConvert;
}
using System.Text;byte[] upwd = (new ASCIIEncoding()).GetBytes(TextBoxPWD.Text);
byte[] mdpwdByte = md5.ComputeHash(upwd);
string mdpwdString = (new ASCIIEncoding()).GetString(mdpwdByte);mdpwdString 就是加密后数据,你添加用户,和验证都用到这个
原理就是:根据你输入的东西,再加密一次,然后跟数据库的那个对比 。全过程没有解密的
这个方法简单好用,我试过了,OK
//pass就是人要加密的密码
pass = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "MD5");
/// MD5加密函数
/// </summary>
/// <param name="str_text">原始字符串 </param>
/// <returns>MD5结果 </returns>
public static string UserMD5(string str_text)
{
MD5 md5 = new MD5CryptoServiceProvider();
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(tbpwd.Text.Trim(), "md5"); 出错在这里 byte[] srctext = Encoding.Unicode.GetBytes(str_text);
byte[] tartext = md5.ComputeHash(srctext);
string str = "";
for (int i = 0; i < tartext.Length; i++)
{
str += tartext[i].ToString("x").PadLeft(2,'0');
}
return str; }到地放到哪里才能起到加密的作用
我晕
和我这个
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(tbpwd.Text.Trim(), "md5"); 出错在这里 也没啥区别呀
请详细指点下了
一下一个产生一个随机的一个盐值:
private string CreateSalt()
{
byte[] bytSalt = new byte[8];
RNGCryptoServiceProvider rng; rng = new RNGCryptoServiceProvider(); rng.GetBytes(bytSalt); return Convert.ToBase64String(bytSalt);
}
比如在存用户的密码时,密码用MD5加盐值,那下次用户登录时,密码不是匹配不上了,因为盐值时随机数啊,这可怎么办,求指点。。!!!!!