简介
Crypto-JS
是一个标准的JavaScript加密库。支持多种加密算法模块,例如:MD5、SHA-1、SHA-256、SHA-512、SHA-3、AES、DES、HMAC等加密算法。
使用说明
引入Crypto-JS
核心库crypto-js.min.js
1
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
|
MD5
MD5是一种被广泛使用的散列函数。它被用于各种安全应用程序,并且通常用于检查文件的完整性。但是,MD5没有抗冲突性,它不适合像SSL证书或依赖于此属性的数字签名这样的应用程序。
1 2 3 4 5 6
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var hash = CryptoJS.MD5("123456"); alert(hash); </script>
|
SHA-1
SHA散列函数是由国家安全局(NSA)设计的。SHA-1是最成熟的SHA散列函数,它用于各种安全应用程序和协议。虽然,SHA-1的碰撞性已发现新的攻击或改进的削弱。
1 2 3 4 5 6
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var hash = CryptoJS.SHA1("123456"); alert(hash); </script>
|
SHA-256
SHA-256是一个在SHA-2设置四个变种。它不是作为广泛使用的SHA-1,虽然它似乎提供了更好的安全性。
1 2 3 4 5 6
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var hash = CryptoJS.SHA256("123456"); alert(hash); </script>
|
SHA-512
SHA-512是SHA-256基本相同但运行在64位的而不是32。
1 2 3 4 5 6
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var hash = CryptoJS.SHA512("123456"); alert(hash); </script>
|
SHA-3
1 2 3 4 5 6
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var hash = CryptoJS.SHA3("123456"); alert(hash); </script>
|
SHA-3 可以配置为输出224, 256, 384个或512个比特中的一个的哈希长度。默认值是512位。
1 2 3 4 5 6
| <script type="text/javascript"> var hash = CryptoJS.SHA3("123456", { outputLength: 512 }); var hash = CryptoJS.SHA3("123456123456", { outputLength: 384 }); var hash = CryptoJS.SHA3("123456", { outputLength: 256 }); var hash = CryptoJS.SHA3("123456", { outputLength: 224 }); </script>
|
RIPEMD-160
1 2 3 4 5 6
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var hash = CryptoJS.RIPEMD160("123456"); alert(hash); </script>
|
HMAC
消息认证码(HMAC)是一种利用Hash函数的消息认证机制。
HMAC可以用在任何迭代加密哈希函数组合。
1 2 3 4 5 6 7 8
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var hash = CryptoJS.HmacMD5("Message", "Secret Passphrase"); var hash = CryptoJS.HmacSHA1("Message", "Secret Passphrase"); var hash = CryptoJS.HmacSHA256("Message", "Secret Passphrase"); var hash = CryptoJS.HmacSHA512("Message", "Secret Passphrase"); </script>
|
PBKDF2
PBKDF2是基于密码的密钥导出函数。在密码学的许多应用中,用户安全归根结底依赖于密码,由于密码通常不能直接用作加密密钥,所以需要进行某些处理。
一个盐为任何给定的密码提供了一组大的密钥,并且迭代计数增加了从密码生成密钥的成本,因此也增加了攻击的难度。
1 2 3 4 5 6 7 8 9 10 11
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var salt = CryptoJS.lib.WordArray.random(128/8);
var key128Bits = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 128/32 }); var key256Bits = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 256/32 }); var key512Bits = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 512/32 });
var key512Bits1000Iterations = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 512/32, iterations: 1000 }); </script>
|
AES
高级加密标准(AES)是一个美国联邦信息处理标准(FIPS)。它是在5年的过程中选出的,其中有15个相互竞争的设计进行了评估。
1 2 3 4 5 6 7 8 9
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase"); </script>
|
DES
DES加密算法和以前占主导地位的,是作为官方发布的联邦信息处理标准(FIPS)。由于小密钥大小,DES现在被认为是不安全的。
1 2 3 4 5 6 7 8 9
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var encrypted = CryptoJS.DES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.DES.decrypt(encrypted, "Secret Passphrase"); </script>
|
Triple DES
Triple DES对每个块应用DES三次以增加密钥大小。该算法被认为是安全的,在这种形式。
1 2 3 4 5 6 7 8 9
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var encrypted = CryptoJS.TripleDES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.TripleDES.decrypt(encrypted, "Secret Passphrase"); </script>
|
Rabbit
Rabbit 是一种高性能的流密码和eSTREAM组合入围。这是3个1年/两年的过程中选择的四个设计之一,其中22个设计进行了评估。
1 2 3 4 5 6 7 8 9
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var encrypted = CryptoJS.Rabbit.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.Rabbit.decrypt(encrypted, "Secret Passphrase"); </script>
|
RC4
RC4流密码是一种广泛使用的。它采用流行的协议,如SSL和WEP。尽管算法简单且速度快,但它的历史并不能激发人们对其安全性的信心。
1 2 3 4 5 6 7 8 9
| <script src="https://cdn.bootcss.com/crypto-js/3.1.9/crypto-js.min.js"></script>
<script type="text/javascript"> var encrypted = CryptoJS.RC4.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.RC4.decrypt(encrypted, "Secret Passphrase"); </script>
|
发现密钥的前几个字节是强烈的非随机和泄漏信息的关键。我们可以抵御这种攻击通过丢弃的密钥流的初始部分。这种改进后的算法是传统上被称为RC4滴。
默认情况下,将删除192个单词(768字节),但您可以配置该算法来删除任意数量的单词。
1 2 3 4 5 6 7
| <script type="text/javascript"> var encrypted = CryptoJS.RC4Drop.encrypt("Message", "Secret Passphrase", { drop: 3072/4 });
var decrypted = CryptoJS.RC4Drop.decrypt(encrypted, "Secret Passphrase", { drop: 3072/4 }); </script>
|
源码下载
https://github.com/brix/crypto-js