JavaScript实现加密与解密详解

 更新时间:2022年06月03日 10:08:06   作者:springsnow  
这篇文章介绍了JavaScript实现加密与解密详解的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

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

GitHub的 https://github.com/brix/crypto-js 上下载该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

See: https://cryptojs.gitbook.io/docs/

编码工具:

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库进行加密

GitHub的 https://github.com/blueimp/JavaScript-MD5 上下载该js。

举例:

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)

到此这篇关于JavaScript实现加密与解密详解的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JavaScript全屏和退出全屏事件总结(附代码)

    JavaScript全屏和退出全屏事件总结(附代码)

    这篇文章主要介绍了JavaScript全屏和退出全屏事件,先通过window.ieIsfSceen = false或true进行判断是否为全屏,在进行进入全屏和退出全屏的操作,需要的朋友可以参考下
    2017-08-08
  • uni-app瀑布流效果实现方法

    uni-app瀑布流效果实现方法

    Uni-app是一个基于Vue.js开发跨平台应用的框架,它可以将代码编译成多个平台下的原生应用,这篇文章主要给大家介绍了关于uni-app瀑布流效果的相关资料,需要的朋友可以参考下
    2023-12-12
  • 关于javascript sort()排序你可能忽略的一点理解

    关于javascript sort()排序你可能忽略的一点理解

    最近在研究Javascript发现了其中一些之前忽略的问题,所以想着总结分享出来,下面这篇文章主要给大家介绍了关于javascript sort()排序你可能忽略的一点理解,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • JS中的form.submit()不能提交表单的错误原因

    JS中的form.submit()不能提交表单的错误原因

    这篇文章主要介绍了JS中的form.submit()不能提交表单的错误原因,本文最后得出结论是按钮的ID、名称不要使用submit,需要的朋友可以参考下
    2014-10-10
  • JSONP解决同源策略限制引起跨域问题原理

    JSONP解决同源策略限制引起跨域问题原理

    这篇文章主要为大家介绍了JSONP解决同源策略限制引起跨域问题原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • JavaScript数据结构yocto queue队列链表代码分析

    JavaScript数据结构yocto queue队列链表代码分析

    这篇文章主要为大家介绍了JavaScript数据结构yocto queue队列链表代码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Bootstrap源码解读下拉菜单(4)

    Bootstrap源码解读下拉菜单(4)

    这篇文章主要源码解读了Bootstrap下拉菜单,介绍了Bootstrap各式各样的下拉菜单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • JavaScript动态添加css样式和script标签

    JavaScript动态添加css样式和script标签

    这篇文章主要介绍了JavaScript动态添加css样式和script标签的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • js原生代码实现轮播图的实例讲解

    js原生代码实现轮播图的实例讲解

    下面小编就为大家带来一篇js原生代码实现轮播图的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • JavaScript中String对象的方法介绍

    JavaScript中String对象的方法介绍

    本文主要对JavaScript中String对象的方法进行介绍。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01

最新评论