咱们很难想象用户在什么样的网络环境使用咱们开发的应用,若是用户所处的网络环境不是一个可信任的环境,那么用户的帐户安全就可能有威胁,好比用户登录时提交的帐号密码被网络嗅探器窃取;客户端加密数据能有效的防护网络嗅探器窃取数据,经过在客户端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