3 回答

TA貢獻1847條經驗 獲得超7個贊
在SQL Server 2005下自帶的函數HashBytes() ,此函數是微軟在SQL Server 2005中提供的,可以用來計算一個字符串的MD5和SHA1值,使用方法如下:
--獲取123456的MD5加密串
select hashbytes('MD5', '123456') ;
--獲取123456的SHA1加密串
select hashbytes('SHA1', '123456') ;
有了這個函數可以在SQL Server中為字符串進行加密,但是HashBytes() 函數的返回結果是VarBinary類型(以 0x 開頭 16 進制形式的二進制數據)。通常情況下,我們需要的都是字符串型的數據,很多人首先想到的可能就是用CAST或Convert函數將VarBinary轉換為VarChar,但這樣轉換后的結果會是亂碼,正確轉換VarBinary可變長度二進制型數據到16進制字符串應該使用系統內置函數sys.fn_VarBinToHexStr()或sys.fn_SqlVarBaseToStr(只在sqlserver2005以后的有),如下所示:
select sys.fn_VarBinToHexStr(hashbytes('MD5', '123456'))
然后就可以截取需要的部分:
set right(sys.fn_VarBinToHexStr(hashbytes('MD5','123456')),32)
為MD5加密串。

TA貢獻1946條經驗 獲得超3個贊
MD5 加密 貌似沒有語言界限。
1 你注意搞清楚 加密了幾次 密文是區分大小寫的
2 搞清楚 他們是不是 純MD5加密 還是 加密后 只取了部分密文
3 明文中兩邊不要有空格 兩種語言對空個處理可能有所不同

TA貢獻1817條經驗 獲得超6個贊
Java 已經實現了 SHA-256 和 SHA-512 兩種 Hash 算法
利用 java.security.MessageDigest 調用已經集成的 Hash 算法
創建 Encrypt 對象,并調用 SHA256 或者 SHA512 并傳入要加密的文本信息,分別得到 SHA-256 或 SHA-512 兩種被加密的 hash 串。
若要改為 MD5 算法,修改傳入參數 strType 為 "MD5" 即可得到 MD5 加密功能。
[java] view plain copy
package test;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Encrypt
{
/**
* 傳入文本內容,返回 SHA-256 串
*
添加回答
舉報