3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
在SQL Server 2005下自帶的函數(shù)HashBytes() ,此函數(shù)是微軟在SQL Server 2005中提供的,可以用來計(jì)算一個(gè)字符串的MD5和SHA1值,使用方法如下:
--獲取123456的MD5加密串
select hashbytes('MD5', '123456') ;
--獲取123456的SHA1加密串
select hashbytes('SHA1', '123456') ;
有了這個(gè)函數(shù)可以在SQL Server中為字符串進(jìn)行加密,但是HashBytes() 函數(shù)的返回結(jié)果是VarBinary類型(以 0x 開頭 16 進(jìn)制形式的二進(jìn)制數(shù)據(jù))。通常情況下,我們需要的都是字符串型的數(shù)據(jù),很多人首先想到的可能就是用CAST或Convert函數(shù)將VarBinary轉(zhuǎn)換為VarChar,但這樣轉(zhuǎn)換后的結(jié)果會(huì)是亂碼,正確轉(zhuǎn)換VarBinary可變長度二進(jìn)制型數(shù)據(jù)到16進(jìn)制字符串應(yīng)該使用系統(tǒng)內(nèi)置函數(shù)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貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
MD5 加密 貌似沒有語言界限。
1 你注意搞清楚 加密了幾次 密文是區(qū)分大小寫的
2 搞清楚 他們是不是 純MD5加密 還是 加密后 只取了部分密文
3 明文中兩邊不要有空格 兩種語言對(duì)空個(gè)處理可能有所不同

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
Java 已經(jīng)實(shí)現(xiàn)了 SHA-256 和 SHA-512 兩種 Hash 算法
利用 java.security.MessageDigest 調(diào)用已經(jīng)集成的 Hash 算法
創(chuàng)建 Encrypt 對(duì)象,并調(diào)用 SHA256 或者 SHA512 并傳入要加密的文本信息,分別得到 SHA-256 或 SHA-512 兩種被加密的 hash 串。
若要改為 MD5 算法,修改傳入?yún)?shù) strType 為 "MD5" 即可得到 MD5 加密功能。
[java] view plain copy
package test;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Encrypt
{
/**
* 傳入文本內(nèi)容,返回 SHA-256 串
*
添加回答
舉報(bào)