1. 概述

1.1 说明

crypto-js(GitHub)是谷歌开发的一个纯JavaScript的加密算法类库,可以非常方便的在前端进行其所支持的加解密操作。目前crypto-js已支持的算法有:MD5,SHA-1,SHA-256,AES,Rabbit,MARC4,HMAC,HMAC-MD5,HMAC-SHA1,HMAC-SHA256,PBKDF2。常用的加密方式有MD5和AES,使用时可以引用总文件,也可以单独引用某一文件。

1.2 使用方式

直接引用:引入crypto-js文件。

安装依赖:npm install crypto-js         import CryptoJS from 'crypto-js'。

2. 示例

2.1 AES加解密(VUE项目)

<template>
<div style="width: 600px; margin: 0 auto">
<el-row>
<el-col :span="10">
<el-row>
<el-col :span="24">明文内容</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-input v-model="content" type="textarea" :rows="8"></el-input>
</el-col>
</el-row>
</el-col>
<el-col :span="4">
<div style="margin-top: 60px;">
<el-row style="margin-bottom: 10px;">
<el-col :span="24">
<el-button type="primary" @click="encryptFunction">加密</el-button>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-button type="primary" @click="unEncryptFunction">解密</el-button>
</el-col>
</el-row>
</div>
</el-col>
<el-col :span="10">
<el-row>
<el-col :span="24">密文内容</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-input v-model="encryptContent" type="textarea" :rows="8"></el-input>
</el-col>
</el-row>
</el-col>
</el-row>
</div>
</template>
<script>
import CryptoJS from 'crypto-js'
export default {
data() {
return {
content: null,
encryptContent: null,
encryptSecretKey: null
}
},
methods: {
/**
* 加密方法
**/
encryptFunction: function () {
this.$data.encryptSecretKey=null;
let objEncrypt = null;
objEncrypt = this.encryptByAES(this.$data.content);
if (objEncrypt) {
this.$data.encryptContent = objEncrypt.encryptContent;
this.$data.encryptSecretKey = objEncrypt.encryptSecretKey;
}
},
/**
* aes加密
* @param strEncrypt:需要加密的内容
* @return 返回加密后的内容与加密密钥
**/
encryptByAES: function (strEncrypt) {
let aesSecretKey = '';//16长度随机字符串
do {
aesSecretKey = Math.random().toString(36).substr(2) + Math.random().toString(36).substr(Math.floor(Math.random() * (12 - 5 + 1) + 5))
} while (aesSecretKey.length != 16);
let aesSecretUtf8 = CryptoJS.enc.Utf8.parse(aesSecretKey);
const iv = CryptoJS.enc.Base64.parse('******KKKKKKKKKKKKKKKKK******');
let aesEncrypt = CryptoJS.AES.encrypt(strEncrypt, aesSecretUtf8, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
let objReturn = {
encryptContent: aesEncrypt.toString(),
encryptSecretKey: aesSecretKey
};
return objReturn;
},
/**
* 解密方法
**/
unEncryptFunction: function () {
this.$data.content=this.unEncryptByAES( this.$data.encryptContent,this.$data.encryptSecretKey)
},
/**
* aes加密
* @param strEncrypt:需要解密的内容
* @param keyEncrypt:加密时用到的密钥
* @return 返回解密后的内容
**/
unEncryptByAES: function (strEncrypt,keyEncrypt) {
let aesSecretUtf8 = CryptoJS.enc.Utf8.parse(keyEncrypt);
const iv = CryptoJS.enc.Base64.parse('******KKKKKKKKKKKKKKKKK******');
let aesUnEncrypt =CryptoJS.AES.decrypt(strEncrypt,aesSecretUtf8,
{
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return aesUnEncrypt.toString(CryptoJS.enc.Utf8);
},
}
}
</script>

  注意:加解密时,所使用的偏移量iv必须相同。

2.2 MD5

this.$data.encryptContent=CryptoJS.MD5(this.$data.content);

JavaScript 加解密库(crypto-js)的更多相关文章

  1. javascript模块化编程库require.js的用法

    随着javascript的兴起,越来越多的公司开始将JS模块化,以增加开发的效率和减少重复编写代码的.更是为了能更加容易的维护日后的代码,因为现在的随着人们对交互效果的越来越强烈的需求,我们的JS代码 ...

  2. 简单的JavaScript图像延迟加载库Echo.js

    插件描述:和 Lazy Load 一样,Echo.js 也是一个用于图像延迟加载 JavaScript.不同的是 Lazy Load 是基于 jQuery 的插件,而 Echo.js 不依赖于 jQu ...

  3. 简单的Javascript图片延迟加载库Echo.js

    简介: 和 Lazy Load 一样,Echo.js 也是一个用于图像延迟加载 JavaScript.不同的是 Lazy Load 是基于 jQuery 的插件,而 Echo.js 不依赖于 jQue ...

  4. JavaScript语法高亮库highlight.js使用

    highlight.js是一款基于JavaScript的语法高亮库,目前支持125种编程语言,有63种可供选择的样式,而且能够做到语言自动识别,和目前主流的JS框架都能兼容,可以混合使用. 这款高亮库 ...

  5. Apache Commons Codec的Base64加解密库

    下载地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi import org.apache.commons.cod ...

  6. js javascript 简易随机值穿插加解密【原】

    适用场景 本方法适用于需要对敏感信息进行加密传输,但加解密要求又不高的场景,因为是前台的javascript加解密,所以其实还是能通过js代码分析出原始值来的. 如果您对信息极其敏感, 比例登录密码这 ...

  7. 介绍一个很好用的Rsa加解密的.Net库 Kalix.ApiCrypto

    Rsa非对称加密技术 这个就不说了,大家上网搜索都知道,公钥加密,私钥解密.当然大家也可以自己实现.这里就懒了,就去找一个现成的库,Nuget上搜索,GitHub上搜索,发现.Net的加解密库,下载量 ...

  8. SpringBoot使用jasypt加解密密码

    在我们的服务中不可避免的需要使用到一些秘钥(数据库.redis等) 开发和测试环境还好,但生产如果采用明文配置讲会有安全问题,jasypt是一个通用的加解密库,我们可以使用它. <depende ...

  9. nodejs加解密

    加密分类 可逆加密和不可逆加密 不可逆加密: 加密后不可解密,只能通过碰撞密文以极小的概率解密; 可逆加密: 加密后可以解密;包括对称加密与非对称加密; 对称加密双方采用共同密钥; 非对称加密: 这种 ...

随机推荐

  1. Tooltip导致的无法访问已释放对象

    最近C#项目中遇到了一个无法访问已释放对象问题,经过反复测试,最终发现问题出在控件Tootip上,因为tootip内部有一个定时器,如果在窗口销毁时,鼠标移动到控件上恰好产生了一个tooltip,就会 ...

  2. Burpsuite之Burp Collaborator模块介绍

    Burp Collaborator.是从Burp suite v1.6.15版本添加的新功能,它几乎是一种全新的渗透测试方法.Burp Collaborator.会渐渐支持blind XSS,SSRF ...

  3. ASP.NET MVC动态加载数据

    ASP.NET MVC动态加载数据,一般的做法是使用$.each方法来循环产生tabel: 你可以在html时先写下非动态的部分:  Source Code 上图中,有一行代码: <tbody ...

  4. 用SQLAlchemy创建一对多,多对多关系表

    多对多关系表的创建: 如果建立好多对多关系后,我们就可以通过关系名进行循环查找,比如laowang = Teacher.query.filter(Teacher.name=='laowang').fi ...

  5. Rem自适应js---flexible.min.js

    网上看到很多移动端适配的各种方法,由于原来工作中对rem的疏忽,所以决定重新学习rem~ 由于移动端特殊性,本文讲的是如何使用rem实现自适应,或叫rem响应式布局,通过使用一个脚本就可以rem自适应 ...

  6. 如何解压RPM包

    有时我们需要RPM包中的某个文件,如何解压RPM包呢? RPM包括是使用cpio格式打包的,因此可以先转成cpio然后解压,如下所示: rpm2cpio xxx.rpm | cpio -div 解压了 ...

  7. 实现Comet(服务器推送)的两种方式:长轮询和http流

    Comet 是一种高级的Ajax技术,实现了服务器向页面实时推送数据的技术,应用场景有体育比赛比分和股票报价等. 实现Comet有两种方式:长轮询与http流 长轮询是短轮询的翻版,短轮询的方式是:页 ...

  8. android图片绘制

    1.基本圆角.边框 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=& ...

  9. auto 和 decltype

    一, auto 1, auto的作用     一般来说, 在把一个表达式或者函数的返回值赋给一个对象的时候, 我们必须要知道这个表达式的返回类型, 但是有的时候我们很难或者无法知道这个表达式或者函数的 ...

  10. 深入理解JVM - 1 - Java内存区域划分

    作者:梦工厂链接:https://www.jianshu.com/p/7ebbe102c1ae来源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处. Java与C++之间有一堵 ...