咱們很難想象用戶在什麼樣的網絡環境使用咱們開發的應用,若是用戶所處的網絡環境不是一個可信任的環境,那麼用戶的帳戶安全就可能有威脅,好比用戶登錄時提交的帳號密碼被網絡嗅探器竊取;客戶端加密數據能有效的防護網絡嗅探器竊取數據,經過在客戶端Javascript加密數據後再提交至服務端進行驗證有效提升了系統的安全係數,這符合縱深防護原則和數據安全要素機密性;本文整理了兩種經常使用的加密算法:md5和sha1;算法
加密算法封裝HashEncrypt對象中,包含MD五、SHA1兩個方法和HashFormat屬性,此外還擴展了系統的String類型,爲其實例添加了md5和sha1方法;安全
HashFormat:輸出格式枚舉,是object類型,靜態結構:{ Base64: "Base64", Hex: "Hex", String: "String" }網絡
MD5方法函數
HashEncrypt.MD5(string,ascii,hexUpperCase )編碼
string 類型:string ,要須要加密的內容,必須的加密
ascii 類型:bool,可選的,是否以ASCII字符編碼加密,默認是Unicodespa
hexUpperCase 類型:bool,可選的,輸出的十六進制編碼是否爲大寫code
HashEncrypt.MD5(string,base64Pad,ascii )orm
string 類型:string ,要須要加密的內容對象
ascii 類型:bool,是否以ASCII字符編碼加密,默認是Unicode
base64Pad 類型:string,輸出base64的填充字符默認是"=",若是設置這個參數爲字符串那麼輸出格式默認是base64編碼。
HashEncrypt.MD5(string,hexUpperCase)
string 類型:string ,要須要加密的內容
hexUpperCase 類型:number,1表示輸出的十六進制編碼爲大寫;
HashEncrypt.MD5(string,options)
string 類型:string ,要須要加密的內容
options 類型:object,加密的參數選項;
options屬性說明:
ascii 類型:bool,是否以ASCII字符編碼加密,默認是Unicode
base64 類型:string,輸出base64的填充字符默認是"=",若是設置這個參數爲字符串那麼輸出格式默認是base64編碼。
hexUpperCase 類型:bool,輸出的十六進制編碼是否爲大寫
format 類型:HashEncrypt.HashFormat枚舉類型,表示密文的輸出格式,可選值有:
"Base64" base64編碼格式 、 "Hex"十六進制編碼格式、 "String"直接轉換字符串格式;
hmacKey 類型:string,可選的,使用 MD5 哈希函數計算基於哈希值的消息驗證代碼 (HMAC),
此 HMAC 進程將密鑰與消息數據混合,使用哈希函數對混合結果進行哈希計算,將所得哈希值與該密鑰混合,而後再次應用哈希函數。輸出的哈希值長度爲 128 位。
示例:
<script>
var data = HashEncrypt.MD5("hello world!",false,false); //"hello world!".md5(false,false) //這行代碼上面的效果是一樣的結果 document.write(data); </script>
輸出結果:99da75326ffaf6acc0debe844b359894
SHA1方法
這個方法的簽名和MD5方法的徹底一致的,在這裏就不重述了,哈哈哈。。
源碼和方法演示
發佈版
http://files.cnblogs.com/Jackson-Bruce/HashEncrypt.min.js