Biblioteca JavaScript de estándares criptográficos.
El desarrollo activo de criptojs ha sido descontinuado. Esta biblioteca ya no se mantiene.
Hoy en día, los nodoj y los navegadores modernos tienen un módulo Crypto
nativo. La última versión de CryptoJS ya usa el módulo criptográfico nativo para la generación de números aleatorios, ya que Math.random()
no es cripto-seguro. Un mayor desarrollo de criptojs resultaría en que solo sea un envoltorio de criptografía nativa. Por lo tanto, el desarrollo y el mantenimiento se han suspendido, es hora de optar por el módulo crypto
nativo.
Requisitos:
npm install crypto-js
ES6 Importar para el caso de uso típico de la firma de llamadas API:
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 incluye:
var AES = require ( "crypto-js/aes" ) ;
var SHA256 = require ( "crypto-js/sha256" ) ;
...
console . log ( SHA256 ( "Message" ) ) ;
Incluyendo todas las bibliotecas, para acceder a métodos adicionales:
var CryptoJS = require ( "crypto-js" ) ;
console . log ( CryptoJS . HmacSHA1 ( "Message" , "Key" ) ) ;
Requisitos:
bower install crypto-js
Modular incluye:
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" ) ) ;
} ) ;
Incluyendo todas las bibliotecas, para acceder a métodos adicionales:
// 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" ) ) ;
} ) ;
< 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 >
Ver: https://cryptojs.gitbook.io/docs/
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}]
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
Cambie el algoritmo hash predeterminado e iteración para PBKDF2 para evitar la seguridad débil mediante la configuración predeterminada.
Hasher KDF personalizado
Soporte de pez soplón
FIJO el orden del módulo en la liberación agrupada.
Incluya el campo del navegador en el paquete lanzado.json.
Variante segura de URL agregada de la codificación Base64. 357
Evite Webpack para agregar el paquete Cryptowrowser. 364
Esta es una actualización que incluye cambios de ruptura para algunos entornos.
En esta versión, Math.random()
ha sido reemplazado por los métodos aleatorios del módulo criptográfico nativo.
Por esta razón, los criptojs podrían no ejecutarse en algunos entornos de JavaScript sin el módulo criptográfico nativo. Como IE 10 o antes o reaccionar nativo.
Rollback, 3.3.0
es lo mismo que 3.1.9-1
.
El movimiento de usar el módulo de cifrado seguro nativo se cambiará a una nueva versión 4.xx
Como es un cambio de ruptura, el impacto es demasiado grande para un lanzamiento menor.
El uso del módulo criptográfico nativo se ha solucionado. Se ha mejorado la importación y acceso del módulo criptográfico nativo.
En esta versión, Math.random()
ha sido reemplazado por los métodos aleatorios del módulo criptográfico nativo.
Por esta razón, Cryptojs podría no ejecutarse en algunos entornos de JavaScript sin módulo criptográfico nativo. Como IE 10 o antes.
Si es absolutamente necesario ejecutar criptojs en dicho entorno, manténgase con la versión 3.1.x
La cifrado y la descripción se mantienen compatibles. Pero tenga en cuenta que las versiones 3.1.x
todavía usan Math.random()
que criptográficamente no es seguro, ya que no es lo suficientemente aleatorio.
Esta versión vino junto con BUG
CRITICAL
.
¡No use esta versión! ¡Por favor, ve por una versión más nueva!
Los 3.1.x
se basan en los criptojs originales, envueltos en módulos CommonJS.