JavaScript使用CryptoJS加解密

选中文字可对指定文章内容进行评论啦,绿色背景文字可以点击查看评论额。

CryptoJS只一个JavaScript的加解密的工具包。它支持多种的算法:MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,进行 AES、DES、Rabbit、RC4、Triple DES 加解密。

CryptoJS的安装

1、使用npm安装

npm install crypto-js

2使用Bower安装

bower install crypto-js

CryptoJS的使用

CryptoJS的使用分为两种环境:Node.js服务器端和浏览器端

一、在Node.js里使用

ES6方式:

import sha256 from 'crypto-js/sha256';
import hmacSHA512 from 'crypto-js/hmac-sha512';
import Base64 from 'crypto-js/enc-base64';
const message, nonce, path, privateKey; // ...
const hashDigest = sha256(nonce + message);
const hmacDigest = Base64.stringify(hmacSHA512(path + hashDigest, privateKey));

非ES6方式:

var AES = require("crypto-js/aes");
var SHA256 = require("crypto-js/sha256");
...
console.log(SHA256("Message"));

可以引入整个CryptoJS

var CryptoJS = require("crypto-js");
console.log(CryptoJS.HmacSHA1("Message", "Key"));

二、在浏览器客户端使用

RequireJS方式:

导入CryptoJS模块

require.config({
    packages: [
        {
            name: 'crypto-js',
            location: 'path-to/bower_components/crypto-js',
            main: 'index'
        }
    ]
});
require(["crypto-js/aes", "crypto-js/sha256"], function (AES, SHA256) {
    console.log(SHA256("Message"));
});

或者导入整个CryptoJS模块,这样可以使用所有加解密的方法

require.config({
    paths: {
        'crypto-js': 'path-to/bower_components/crypto-js/crypto-js'
    }
});
require(["crypto-js"], function (CryptoJS) {
    console.log(CryptoJS.HmacSHA1("Message", "Key"));
});

非RequireJS方式:

<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>

 CryptoJS API

这里以AES加密,加密的对象分为两种情况:纯文本和对象。

纯文本加密

var CryptoJS = require("crypto-js");
// Encrypt
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123').toString();
// Decrypt
var bytes  = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var originalText = bytes.toString(CryptoJS.enc.Utf8);
console.log(originalText); // 输出'my message'

对象加密

var CryptoJS = require("crypto-js");
var data = [{id: 1}, {id: 2}]
// Encrypt
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123').toString();
// Decrypt
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}]

更多算法参考:https://cryptojs.gitbook.io/docs

 

 

 

 

版权声明:著作权归作者所有。

相关推荐

SSH 禁止特定用户使用密码登录

SSH禁止特定用户使用密码登录可以在/etc/ssh/sshd_config添加Match配置过滤指定的用户。按用户过滤Match User user1,user2,user3,user4     PasswordAuthentication no 按组过滤Match Group group1  &

Android使用Fresco加载图片的用法

在Android的App开发中,延时加载图片是硬需求。有好几个开源的项目也提供了延时加载图片的功能,常用的有:Fresco,Glide和Universal Image Loader。这里主要简单介绍下Fresco。添加依赖在build.gradle添加依赖如下:dependencies {   ...    compi

纯JavaScript检测页面是否加载完成(理解JavaScript页面加载事件)

JavaScript与页面加载相关的事件先介绍JavaScript与页面加载相关的几个事件:document.readystatechangereadystatechage事件会监控document.readyState。readyState有三个值:loading:文档正在加载interactive:文档已加载完成且已被解析,但子资源(如image,css,iframe等)仍在加载。comple

RabbitMQ使用rabbitmqctl添加用户管理

rabbitmqctrl是RabbitMQ的管理工具,在RabbitMQ安装目录的sbin下。虚拟主机管理添加虚拟主机rabbitmqctl add_vhost <vhost> 删除虚拟主机rabbitmqctl delete_vhost <vhost>用户管理 添加用户rabbitmqctl add_user <username> <

Spring Boot使用Jasypt加密配置文件

Jasypt Spring Boot为Spring Boot项目的属性提供了加密支持。有三种方式集成jasypt-spring-boot到Spring boot应用中。jasypt-spring-boot-starter如果Spring Boot项目中使用了@SpringBootApplication或者@EnableAutoConfiguration,在项目里添加jasypt-spring-bo

javascript——generator理解

最近在学习CK5的时候,遇到了一个函数:function* _getAllUpcastDefinitions( definition ) { if ( definition.model.values ) { for ( const value of definition.model.values ) { const model = { key: definition.model.key

理解JavaScript的var, let和const使用与作用域

在JavaScript里,var,let和const都可以用来声明变量的。var username= '张三'; let gender = 'Male'; const age = 20;let,var和const的使用let和var可以在声明后更改它们的值,并且在声明时不赋值,JavaScript会自动以默认值对它们做初始化。const声明的变量不能改变,也即是常量,声明变量时必须赋值。var u