摘要
我們很難想象用戶在什么樣的網絡環境使用我們開發的應用,如果用戶所處的網絡環境不是一個可信任的環境,那么用戶的賬戶安全就可能有威脅,比如用戶登陸時提交的賬號密碼被網絡嗅探器竊取;客戶端加密數據能有效的防御網絡嗅探器竊取數據,通過在客戶端Javascript加密數據后再提交至服務端進行驗證有效提高了系統的安全系數,這符合縱深防御原則和數據安全要素機密性;本文整理了兩種常用的加密算法:md5和sha1;
HashEncrypt加密對象
加密算法封裝HashEncrypt對象中,包含MD5、SHA1兩個方法和HashFormat屬性,此外還擴展了系統的String類型,為其實例添加了md5和sha1方法;
屬性
HashFormat:輸出格式枚舉,是object類型,靜態結構:{ Base64: "Base64", Hex: "Hex", String: "String" }
方法
MD5方法
HashEncrypt.MD5(string,ascii,hexUpperCase )
string 類型:string ,要需要加密的內容,必須的
ascii 類型:bool,可選的,是否以ASCII字符編碼加密,默認是Unicode
hexUpperCase 類型:bool,可選的,輸出的十六進制編碼是否為大寫
HashEncrypt.MD5(string,base64Pad,ascii )
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
相關資料:
http://pajhome.org.uk/crypt/md5