CryptoJS是一个JavaScript加密算法库,用于实现各种加密算法和哈希函数。它提供了一种简单而强大的方式来执行加密操作,包括对称加密算法、非对称加密算法和哈希函数等。
CryptoJS支持的主要功能包括:
1.对称加密:CryptoJS提供了常见的对称加密算法,如AES(Advanced Encryption Standard)和DES(Data Encryption Standard)。这些算法使用相同的密钥进行加密和解密操作,适用于保护数据的机密性。
2.非对称加密:CryptoJS支持非对称加密算法,如RSA(Rivest-Shamir-Adleman)。非对称加密使用一对密钥,包括公钥和私钥,用于加密和解密数据。公钥用于加密数据,私钥用于解密数据,从而实现数据的机密性和身份认证。
3.哈希函数:CryptoJS提供了多种哈希函数,包括MD5、SHA-1、SHA-256等。哈希函数将任意长度的数据转换为固定长度的哈希值,用于数据完整性校验、密码存储和数字签名等应用。
4.加密模式:CryptoJS支持多种加密模式,如ECB(Electronic Codebook)、CBC(Cipher Block Chaining)和CTR(Counter)。这些模式定义了数据块如何被加密和连接在一起,以提供更强的安全性和数据保护。
CryptoJS易于使用,可以在浏览器环境和Node.js环境中使用。它提供了简洁的API,使开发人员能够轻松地执行加密和解密操作。使用CryptoJS,您可以在JavaScript中实现安全的数据传输、数据存储和身份验证等功能。
npm install crypto-js
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
ciphertext:AES加密密文
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
options(可选):加密选项,如加密模式、填充方式等。
'''
const cryptoJS = require('crypto-js')
const message = "Hello, World!";
const key = "ThisIsTheSecretKey";
const options = {
iv: cryptoJS.enc.Hex.parse('0000000000000000'), // 初始化向量为全零,初始化向量用于增加密码算法的安全性。16 字节的字节数组或WordArray 对象
mode: cryptoJS.mode.ECB, // 加密模式,默认为 ECB
padding: cryptoJS.pad.Pkcs7, // 加密模式,默认为 ECB
};
const encrypted = cryptoJS.AES.encrypt(message, key, options);// 进行 AES 加密
const ciphertext = encrypted.toString(); // 获取加密后的密文
console.log('加密密文:',ciphertext);
const decrypted = cryptoJS.AES.decrypt(ciphertext, key, options)
console.log('解密明文',decrypted.toString(cryptoJS.enc.Utf8))
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
ciphertext:DES加密密文
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
options(可选):加密选项,如加密模式、填充方式等。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const options = {
iv: cryptoJS.enc.Hex.parse('0000000000000000'), // 初始化向量为全零,初始化向量用于增加密码算法的安全性。16 字节的字节数组或WordArray 对象
mode: cryptoJS.mode.ECB, // 加密模式,默认为 ECB
padding: cryptoJS.pad.Pkcs7, // 加密模式,默认为 ECB
};
const encrypted = cryptoJS.DES.encrypt(message, key, options);
const ciphertext = encrypted.toString();
console.log('加密密文:', ciphertext);
const decrypted = cryptoJS.DES.decrypt(ciphertext, key, options);
console.log('解密明文:', decrypted.toString(cryptoJS.enc.Utf8))
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
ciphertext:DES加密密文
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
options(可选):加密选项,如加密模式、填充方式等。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const options = {
iv: cryptoJS.enc.Hex.parse('0000000000000000'), // 初始化向量为全零,初始化向量用于增加密码算法的安全性。16 字节的字节数组或WordArray 对象
mode: cryptoJS.mode.ECB, // 加密模式,默认为 ECB
padding: cryptoJS.pad.Pkcs7, // 加密模式,默认为 ECB
};
const encrypted = cryptoJS.TripleDES.encrypt(message, key, options);
const ciphertext = encrypted.toString();
console.log('加密密文:', ciphertext);
const decrypted = cryptoJS.TripleDES.decrypt(ciphertext, key, options);
console.log('解密明文:', decrypted.toString(cryptoJS.enc.Utf8))
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
ciphertext:DES加密密文
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
options(可选):加密选项,如加密模式、填充方式等。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const options = {
iv: cryptoJS.enc.Hex.parse('0000000000000000'), // 初始化向量为全零,初始化向量用于增加密码算法的安全性。16 字节的字节数组或WordArray 对象
mode: cryptoJS.mode.ECB, // 加密模式,默认为 ECB
padding: cryptoJS.pad.Pkcs7, // 加密模式,默认为 ECB
};
const encrypted = cryptoJS.Blowfish.encrypt(message, key, options);
const ciphertext = encrypted.toString();
console.log('加密密文:', ciphertext);
const decrypted = cryptoJS.Blowfish.decrypt(ciphertext, key, options);
console.log('解密明文:', decrypted.toString(cryptoJS.enc.Utf8))
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
ciphertext:DES加密密文
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
options(可选):加密选项,如加密模式、填充方式等。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const options = {
iv: cryptoJS.enc.Hex.parse('0000000000000000'), // 初始化向量为全零,初始化向量用于增加密码算法的安全性。16 字节的字节数组或WordArray 对象
mode: cryptoJS.mode.ECB, // 加密模式,默认为 ECB
padding: cryptoJS.pad.Pkcs7, // 加密模式,默认为 ECB
};
const encrypted = cryptoJS.RC4.encrypt(message, key, options);
const ciphertext = encrypted.toString();
console.log('加密密文:', ciphertext);
const decrypted = cryptoJS.RC4.decrypt(ciphertext, key, options);
console.log('解密明文:', decrypted.toString(cryptoJS.enc.Utf8))
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
ciphertext:DES加密密文
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
options(可选):加密选项,如加密模式、填充方式等。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const options = {
iv: cryptoJS.enc.Hex.parse('0000000000000000'), // 初始化向量为全零,初始化向量用于增加密码算法的安全性。16 字节的字节数组或WordArray 对象
mode: cryptoJS.mode.ECB, // 加密模式,默认为 ECB
padding: cryptoJS.pad.Pkcs7, // 加密模式,默认为 ECB
};
const encrypted = cryptoJS.RC4Drop.encrypt(message, key, options);
const ciphertext = encrypted.toString();
console.log('加密密文:', ciphertext);
const decrypted = cryptoJS.RC4Drop.decrypt(ciphertext, key, options);
console.log('解密明文:', decrypted.toString(cryptoJS.enc.Utf8))
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
ciphertext:DES加密密文
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
options(可选):加密选项,如加密模式、填充方式等。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const options = {
iv: cryptoJS.enc.Hex.parse('0000000000000000'), // 初始化向量为全零,初始化向量用于增加密码算法的安全性。16 字节的字节数组或WordArray 对象
mode: cryptoJS.mode.ECB, // 加密模式,默认为 ECB
padding: cryptoJS.pad.Pkcs7, // 加密模式,默认为 ECB
};
const encrypted = cryptoJS.Rabbit.encrypt(message, key, options);
const ciphertext = encrypted.toString();
console.log('加密密文:', ciphertext);
const decrypted = cryptoJS.Rabbit.decrypt(ciphertext, key, options);
console.log('解密明文:', decrypted.toString(cryptoJS.enc.Utf8))
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
ciphertext:DES加密密文
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
options(可选):加密选项,如加密模式、填充方式等。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const options = {
iv: cryptoJS.enc.Hex.parse('0000000000000000'), // 初始化向量为全零,初始化向量用于增加密码算法的安全性。16 字节的字节数组或WordArray 对象
mode: cryptoJS.mode.ECB, // 加密模式,默认为 ECB
padding: cryptoJS.pad.Pkcs7, // 加密模式,默认为 ECB
};
const encrypted = cryptoJS.RabbitLegacy.encrypt(message, key, options);
const ciphertext = encrypted.toString();
console.log('加密密文:', ciphertext);
const decrypted = cryptoJS.RabbitLegacy.decrypt(ciphertext, key, options);
console.log('解密明文:', decrypted.toString(cryptoJS.enc.Utf8))
'''
message:要计算哈希值的消息,字符串或者WordArray对象
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.MD5(message).toString())
console.log(cryptoJS.MD5(wordArray).toString())
'''
message:要计算哈希值的消息,字符串或者WordArray对象
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.SHA256(message).toString())
console.log(cryptoJS.SHA256(wordArray).toString())
'''
message:要计算哈希值的消息,字符串或者WordArray对象
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.SHA1(message).toString())
console.log(cryptoJS.SHA1(wordArray).toString())
'''
message:要计算哈希值的消息,字符串或者WordArray对象
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.SHA224(message).toString())
console.log(cryptoJS.SHA224(wordArray).toString())
'''
message:要计算哈希值的消息,字符串或者WordArray对象
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.SHA384(message).toString())
console.log(cryptoJS.SHA384(wordArray).toString())
'''
message:要计算哈希值的消息,字符串或者WordArray对象
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.SHA512(message).toString())
console.log(cryptoJS.SHA512(wordArray).toString())
'''
message:要计算哈希值的消息,字符串或者WordArray对象
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.SHA3(message).toString())
console.log(cryptoJS.SHA3(wordArray).toString())
'''
message:要计算哈希值的消息,字符串或者WordArray对象
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.RIPEMD160(message).toString())
console.log(cryptoJS.RIPEMD160(wordArray).toString())
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.HmacMD5(message,key).toString())
console.log(cryptoJS.HmacMD5(wordArray,key).toString())
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.HmacSHA1(message,key).toString())
console.log(cryptoJS.HmacSHA1(wordArray,key).toString())
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.HmacSHA256(message,key).toString())
console.log(cryptoJS.HmacSHA256(wordArray,key).toString())
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.HmacSHA224(message,key).toString())
console.log(cryptoJS.HmacSHA224(wordArray,key).toString())
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.HmacSHA512(message,key).toString())
console.log(cryptoJS.HmacSHA512(wordArray,key).toString())
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.HmacSHA384(message,key).toString())
console.log(cryptoJS.HmacSHA384(wordArray,key).toString())
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.HmacSHA3(message,key).toString())
console.log(cryptoJS.HmacSHA3(wordArray,key).toString())
'''
message:要加密的消息,可以是字符串或 WordArray 对象。
key:用于加密的密钥,可以是字符串、WordArray 对象或者一个包含字节的数组。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const key = "ThisIsTheSecretKey";
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.HmacRIPEMD160(message,key).toString())
console.log(cryptoJS.HmacRIPEMD160(wordArray,key).toString())
'''
password:密码,作为生成密钥的输入。
salt:盐值,增加密码强度的随机值。
options:选项,包括密钥大小和迭代次数。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const password = 'myPassword';
const salt = 'somesalt';
const options = {
keySize: 256 / 32, // 生成的密钥长度(以字节为单位)
iterations: 1000, // 迭代次数
};
const key = cryptoJS.PBKDF2(password, salt, options).toString();// 生成密钥
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.HmacMD5(message,key).toString())
console.log(cryptoJS.HmacMD5(wordArray,key).toString())
'''
password:密码,作为生成密钥的输入。
salt:盐值,增加密码强度的随机值。
options:选项,包括密钥大小和迭代次数。
'''
const cryptoJS = require('crypto-js')
const message = 'hello word';
const password = 'myPassword';
const salt = 'somesalt';
const options = {
keySize: 256 / 32, // 生成的密钥长度(以字节为单位)
iterations: 1000, // 迭代次数
};
const key = cryptoJS.EvpKDF(password, salt, options).toString();// 生成密钥
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
console.log(cryptoJS.HmacMD5(message,key).toString())
console.log(cryptoJS.HmacMD5(wordArray,key).toString())
64 位整数是由 64 个二进制位组成的整数类型,可以表示的范围是从 -9223372036854775808 到 9223372036854775807
'''
high:表示 64 位整数的高位
low:表示 64 位整数的低位
'''
const cryptoJS = require('crypto-js')
const high = 66051
const low = 67438087
cryptoJS.x64.Word.create(high, low)
'''
words:CryptoJS.x64.Word数组
sigBytes:字节数的整数,指定字节数组的长度。
'''
const message = 'hello word';
const high1 = 66051
const low1 = 67438087
const high2 = 404298267
const low2 = 471670303
const wordArray = cryptoJS.x64.WordArray.create();
wordArray.init(message)
const wordArray1 = cryptoJS.x64.WordArray.create([
cryptoJS.x64.Word.create(high1, low1),
cryptoJS.x64.Word.create(high2, low2)
], 10);
wordArray1.init(message)