|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- # crypto-js [![Build Status](https://travis-ci.org/brix/crypto-js.svg?branch=develop)](https://travis-ci.org/brix/crypto-js)
-
- JavaScript library of crypto standards.
-
- ## Node.js (Install)
-
- Requirements:
-
- - Node.js
- - npm (Node.js package manager)
-
- ```bash
- npm install crypto-js
- ```
-
- ### Usage
-
- ES6 import for typical API call signing use case:
-
- ```javascript
- 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));
- ```
-
- Modular include:
-
- ```javascript
- var AES = require("crypto-js/aes");
- var SHA256 = require("crypto-js/sha256");
- ...
- console.log(SHA256("Message"));
- ```
-
- Including all libraries, for access to extra methods:
-
- ```javascript
- var CryptoJS = require("crypto-js");
- console.log(CryptoJS.HmacSHA1("Message", "Key"));
- ```
-
- ## Client (browser)
-
- Requirements:
-
- - Node.js
- - Bower (package manager for frontend)
-
- ```bash
- bower install crypto-js
- ```
-
- ### Usage
-
- Modular include:
-
- ```javascript
- 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"));
- });
- ```
-
- Including all libraries, for access to extra methods:
-
- ```javascript
- // Above-mentioned will work or use this simple form
- require.config({
- paths: {
- 'crypto-js': 'path-to/bower_components/crypto-js/crypto-js'
- }
- });
-
- require(["crypto-js"], function (CryptoJS) {
- console.log(CryptoJS.HmacSHA1("Message", "Key"));
- });
- ```
-
- ### Usage without RequireJS
-
- ```html
- <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>
- ```
-
- ## API
-
- See: https://cryptojs.gitbook.io/docs/
-
- ### AES Encryption
-
- #### Plain text encryption
-
- ```javascript
- 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'
- ```
-
- #### Object encryption
-
- ```javascript
- 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}]
- ```
-
- ### List of modules
-
-
- - ```crypto-js/core```
- - ```crypto-js/x64-core```
- - ```crypto-js/lib-typedarrays```
-
- ---
-
- - ```crypto-js/md5```
- - ```crypto-js/sha1```
- - ```crypto-js/sha256```
- - ```crypto-js/sha224```
- - ```crypto-js/sha512```
- - ```crypto-js/sha384```
- - ```crypto-js/sha3```
- - ```crypto-js/ripemd160```
-
- ---
-
- - ```crypto-js/hmac-md5```
- - ```crypto-js/hmac-sha1```
- - ```crypto-js/hmac-sha256```
- - ```crypto-js/hmac-sha224```
- - ```crypto-js/hmac-sha512```
- - ```crypto-js/hmac-sha384```
- - ```crypto-js/hmac-sha3```
- - ```crypto-js/hmac-ripemd160```
-
- ---
-
- - ```crypto-js/pbkdf2```
-
- ---
-
- - ```crypto-js/aes```
- - ```crypto-js/tripledes```
- - ```crypto-js/rc4```
- - ```crypto-js/rabbit```
- - ```crypto-js/rabbit-legacy```
- - ```crypto-js/evpkdf```
-
- ---
-
- - ```crypto-js/format-openssl```
- - ```crypto-js/format-hex```
-
- ---
-
- - ```crypto-js/enc-latin1```
- - ```crypto-js/enc-utf8```
- - ```crypto-js/enc-hex```
- - ```crypto-js/enc-utf16```
- - ```crypto-js/enc-base64```
-
- ---
-
- - ```crypto-js/mode-cfb```
- - ```crypto-js/mode-ctr```
- - ```crypto-js/mode-ctr-gladman```
- - ```crypto-js/mode-ofb```
- - ```crypto-js/mode-ecb```
-
- ---
-
- - ```crypto-js/pad-pkcs7```
- - ```crypto-js/pad-ansix923```
- - ```crypto-js/pad-iso10126```
- - ```crypto-js/pad-iso97971```
- - ```crypto-js/pad-zeropadding```
- - ```crypto-js/pad-nopadding```
-
-
- ## Release notes
-
- ### 4.1.1
-
- Fix module order in bundled release.
-
- Include the browser field in the released package.json.
-
- ### 4.1.0
-
- Added url safe variant of base64 encoding. [357](https://github.com/brix/crypto-js/pull/357)
-
- Avoid webpack to add crypto-browser package. [364](https://github.com/brix/crypto-js/pull/364)
-
- ### 4.0.0
-
- This is an update including breaking changes for some environments.
-
- In this version `Math.random()` has been replaced by the random methods of the native crypto module.
-
- For this reason CryptoJS might not run in some JavaScript environments without native crypto module. Such as IE 10 or before or React Native.
-
- ### 3.3.0
-
- Rollback, `3.3.0` is the same as `3.1.9-1`.
-
- The move of using native secure crypto module will be shifted to a new `4.x.x` version. As it is a breaking change the impact is too big for a minor release.
-
- ### 3.2.1
-
- The usage of the native crypto module has been fixed. The import and access of the native crypto module has been improved.
-
- ### 3.2.0
-
- In this version `Math.random()` has been replaced by the random methods of the native crypto module.
-
- For this reason CryptoJS might does not run in some JavaScript environments without native crypto module. Such as IE 10 or before.
-
- If it's absolute required to run CryptoJS in such an environment, stay with `3.1.x` version. Encrypting and decrypting stays compatible. But keep in mind `3.1.x` versions still use `Math.random()` which is cryptographically not secure, as it's not random enough.
-
- This version came along with `CRITICAL` `BUG`.
-
- DO NOT USE THIS VERSION! Please, go for a newer version!
-
- ### 3.1.x
-
- The `3.1.x` are based on the original CryptoJS, wrapped in CommonJS modules.
-
-
|