目前原生JS貌似并没有提供MD5计算相关的函数方法,只能自己实现或者使用前辈大神写好的。

一、使用crypto.js库进行加密


它可以单独引入所需要加密方式的js;也可以引入一个crypto-js.js 这个文件,它相当于引入了所有的加密方式。

用法:


<script type="text/javascript" src="path-to/bower_components/crypto-js/crypto-js.js"></script> <script type="text/javascript">     var encrypted = CryptoJS.AES(...);     var encrypted = CryptoJS.SHA256(...); </script>


1、举例:

Hash加密:


//加密实例一   console.log("加密结果一 MD5:"+CryptoJS.MD5("你好"));     //加密实例二   var pwd="passwor"; console.log("加密结果二 Hmac-MD5:   "+CryptoJS.HmacMD5("你好",pwd));


AES对称加密:

普通文本加密


// 加密 var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123').toString();  // 解密 var bytes  = CryptoJS.AES.decrypt(ciphertext, 'secret key 123'); var originalText = bytes.toString(CryptoJS.enc.Utf8);  console.log(originalText); // 'my message'


对象加密


var data = [{id: 1}, {id: 2}]  // 加密 var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123').toString();  // 解密 var bytes  = CryptoJS.AES.decrypt(ciphertext, 'secret key 123'); var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));  console.log(decryptedData); // [{id: 1}, {id: 2}]


Custom Key and IV


var key = CryptoJS.enc.Utf8.parse('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); //密钥  var iv  = CryptoJS.enc.Utf8.parse('1234567812345678');
// 加密
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv });
// 解密 var decrypted =CryptoJS.AES.decrypt(encrypted,key,         {             iv:iv,             mode:CryptoJS.mode.CBC,             padding:CryptoJS.pad.Pkcs7         }); var originalText = decrypted.toString(CryptoJS.enc.Utf8);


Block Modes and Padding


var key  = CryptoJS.enc.Utf8.parse('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');  //密钥  var iv   = CryptoJS.enc.Utf8.parse('1234567812345678'); var encrypted =CryptoJS.AES.encrypt("Message", ,key,         {             iv:iv,             mode:CryptoJS.mode.CBC,             padding:CryptoJS.pad.Pkcs7         }); //返回的是base64格式的密文


2、API

编码工具:


var words = CryptoJS.enc.Base64.parse("SGVsbG8sIFdvcmxkIQ=="); var base64 = CryptoJS.enc.Base64.stringify(words);  var words = CryptoJS.enc.Hex.parse("48656c6c6f2c20576f726c6421"); var hex = CryptoJS.enc.Hex.stringify(words);  var words = CryptoJS.enc.Utf8.parse(""); var utf8 = CryptoJS.enc.Utf8.stringify(words);


二、使用JavaScript-MD5库进行加密


Calculate the (​​hex​​​-encoded) ​​MD5​​ hash of a given string value:


var hash = md5('value') // "2063c1608d6e0baf80249c42e2be5804" var v1= md5('{"name":"嘻嘻嘻嘻嘻嘻嘻嘻嘻","age":22}'); //56b21847ed32d2d96cf74077b22342eb


Calculate the (hex-encoded) ​​HMAC​​-MD5 hash of a given string value and key:


var hash = md5('value', 'key') // "01433efd5f16327ea4b31144572c67f6"


Calculate the raw MD5 hash of a given string value:


var hash = md5('value', null, true)


Calculate the raw HMAC-MD5 hash of a given string value and key:


var hash = md5('value', 'key', true)