我提供的解决方案可以解决数据已经加密,但是采用的是非单向向加密,客户提出新的需求,要求改为单向加密。
如下代码是完整的解决方案 ,照搬即可:
sql代码(>=sq2005)
use IASTest
if OBJECT_ID('dbo.Tsec_PersonSecurityBak','u') is null
select PersonId,Pwd into dbo.Tsec_PersonSecurityBak
from dbo.Tsec_PersonSecurity;
update dbo.Tsec_PersonSecurity
set Pwd=upper(sys.fn_varbintohexsubstring(0, hashbytes('MD5',Pwd),1,0));
go
------------------------------------------------------------
C#代码
public static string MD5Encrypt(string sourceString)
{
MD5 md5 = MD5.Create();
// This must apply Unicode16's GetBytes method (as in T-SQL the "N'**'" is an Unicode16 encoding string):
byte[] bytes = UnicodeEncoding.Unicode.GetBytes(sourceString);
byte[] hashBytes = md5.ComputeHash(bytes);
string result="";
foreach (byte hashByte in hashBytes)
{
result+=hashByte.ToString("X2");
}
}