C#.NET 开发ASP.NET (要求的加密级别是普通的就可以了)
在SQL SERVER 中建立了一个用户帐户表; 里边有用户帐户,及密码字段都是 NVARCHAR(20)类型; 现我想对该密码字段进行加密, 以便别人查看SQL SERVER 数库时看到的密码内容是加密过后的;请大家帮帮忙, 给出一个加密及解密还原的实例程序吧. 先谢谢了!
在SQL SERVER 中建立了一个用户帐户表; 里边有用户帐户,及密码字段都是 NVARCHAR(20)类型; 现我想对该密码字段进行加密, 以便别人查看SQL SERVER 数库时看到的密码内容是加密过后的;请大家帮帮忙, 给出一个加密及解密还原的实例程序吧. 先谢谢了!
解决方案 »
- 如何实现根据分辨率自动调整winform控件大小
- 请教高手!!!用户自定义公式的解析、执行问题!
- show出同一级Mdi的子窗体
- 求教:如何用socket来从缓冲区中发送读取指定长度的内容,实在不知道SocketFlags是什么意思,加上出错
- 请问验证码是怎么实现的?就剩十分了
- DataGrid里不用数据连接,怎么样把一个table里的数据显示在datagrid里面啊??
- 請不要用substring
- 如何用C#开发一个基于http协议的发送邮件功能
- 用c#如何实现运行时按f2键更改label的值?就像windows下按f2键可以重命名一样的功能?
- 关于序列化的问题
- 大家遇到类似 xml 格式的文本如何处理的?
- vb如何调用C#开发的DLL 库函数
{
// 比较两个 byte []
public static bool CompareBytes(byte [] b1, byte [] b2)
{
if (b1 == null || b2 == null || b1.Length != b2.Length) return false;
for (int i = 0; i < b1.Length; i++)
{
if (b1[i] != b2[i]) return false;
}
return true;
} // 输入 byte [],返回 string
public static string BytesToHexString(byte [] bs)
{
StringBuilder sb = new StringBuilder(64);
foreach (byte b in bs)
{
sb.AppendFormat("{0:X2}", b);
}
return sb.ToString();
} // 对字符串进行加密,输入明文,返回 byte[] 密文
public static byte [] PwdBytes(string s)
{
return (new MD5CryptoServiceProvider()).ComputeHash(Encoding.UTF8.GetBytes(s));
} // 对字符串进行加密,输入明文,返回 string 密文
public static string PwdString(string s)
{
return BytesToHexString(PwdBytes(s));
}
}
* Copyright(C) 2004-2005 ******** All Rights Reserved.
************************************************************************/using System;
using System.Text;
using System.IO;
using System.Security.Cryptography;namespace CryptionDataMD5
{
/// <summary>
/// Make message digest based on MD5 for byte array and string
/// </summary>
/// <Author>Yao</Author>
/// <Date>2005/06/13</Date>
public class CryptionDataMD5
{
/// <summary>
/// Make message digest based on MD5 for byte array
/// </summary>
/// <param name="origin">source byte array</param>
/// <returns>message digest</returns>
public static string EncryptionByteData(byte[] SourceData)
{
try
{
//create a stream object
MemoryStream stream = new MemoryStream(SourceData);
//define hex table
const string HEX_TABLE = "0123456789abcdef";
//create a MD5CryptoServiceProvider object
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
//Calculate MD5 Checksum
byte[] hashData = md5.ComputeHash(stream); //convert to string
StringBuilder sb=new StringBuilder();
sb.Length =hashData.Length *2;
//make string sb
for(int i=0;i<hashData.Length ;i++)
{
sb[i*2]=HEX_TABLE[hashData[i]>>4];
sb[i*2+1]=HEX_TABLE[hashData[i] & 0xF];
}
return sb.ToString();
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// /// Make message digest based on MD5 for string
/// </summary>
/// <param name="origin">source string</param>
/// <returns>message digest</returns>
public static string EncryptionStringData(string SourceData)
{
string messageDigest = string.Empty;
try
{
byte[] sorData = Encoding.Default.GetBytes(SourceData);
messageDigest = EncryptionByteData(sorData);
}
catch(Exception ex)
{
throw ex;
}
return messageDigest;
}
}
}
public static byte [] PwdBytes(string s)
{
return (new MD5CryptoServiceProvider()).ComputeHash(Encoding.UTF8.GetBytes(s));
}------------------------------------------------------------------------------
那么输入密文, 返回明文呢? 请wuyi8808(空间/IV) 把该函数补上给我 谢
1。通过你的系统修改一下任意一个用户,如用户A的密码,比如将其密码修改为“111”,则可以在数据库里该用户密码项得到一个密码密文“×××”
2。将他想利用的用户B的密码密文修改成“×××”,那么用户B的密码也就变成“111”啦。所以,我想是否可以在生成密码密文的时候加上用户名信息,这样,不同的用户名,即使密码一样,但是密码密文也不一样。
这样一来,应该可以解决通过修改数据库密码密文来修改用户密码的问题。
TextBox password;string passwordText = Password.PwdString(loginName.Text.Trim() + password.Text.Trim() + "AnyString");