google decrypt crypto javascript cryptography sjcl

decrypt - rsa javascript



¿Buenos ejemplos de la biblioteca de criptografía de JavaScript de Stanford(SJCL)?(Criptografía JS) (2)

Esto puede ser un poco tarde, pero también recientemente he estado investigando cómo hacer hashing criptográfico del lado del cliente, y la respuesta de Kevin Hakanson fue muy útil, ¡el sitio de demostración también es muy útil! Muestra cómo usar una función pseudoaleatoria personalizada con PBKDF2 (el HMAC y el SHA1), pero descubrí que si no se pasa uno, SJCL tiene valores predeterminados y solo quería mostrar cómo hacerlo, además de generar un sal .

También encontré los documentos sjcl bastante útiles.

Para generar un salt aleatorio y usar PBKDF2 en la contraseña "contraseña", puede hacer esto, que termina siendo solo 3 líneas:

// Each random "word" is 4 bytes, so 8 would be 32 bytes var saltBits = sjcl.random.randomWords(8); // eg. [588300265, -1755622410, -533744668, 1408647727, -876578935, 12500664, 179736681, 1321878387] // I left out the 5th argument, which defaults to HMAC which in turn defaults to use SHA256 var derivedKey = sjcl.misc.pbkdf2("password", saltBits, 1000, 256); // eg. [-605875851, 757263041, -993332615, 465335420, 1306210159, -1270931768, -1185781663, -477369628] // Storing the key is probably easier encoded and not as a bitArray // I choose base64 just because the output is shorter, but you could use sjcl.codec.hex.fromBits var key = sjcl.codec.base64.fromBits(derivedKey); // eg. "2+MRdS0i6sHEyvJ5G7x0fE3bL2+0Px7IuVJoYeOL6uQ="

Si desea almacenar la sal, probablemente desee codificarla.

var salt = sjcl.codec.base64.fromBits(saltBits); // eg. "IxC/6ZdbU/bgL7PkU/ZCL8vAd4kAvr64CraQaU7KQ3M=" // Again I just used base64 because it''s shorter, but you could use hex // And to get the bitArray back, you would do the exact opposite var saltBits = sjcl.codec.base64.toBits(salt);

Estoy buscando una manera de hacer criptografía del lado del cliente en Javascript (teniendo en cuenta http://www.matasano.com/articles/javascript-cryptography/ ) y he encontrado SJCL . Pero parece que no puedo encontrar buenos ejemplos de código para ello. Cualquier punteros?


Hice una presentación el año pasado titulada Guía del desarrollador de JavaScript y criptografía web y tengo el sitio de demostración en línea en https://jswebcrypto.azurewebsites.net/

Esto incluye ejemplos simples de hash, HMAC, PBKDF2 y AES para la línea de comandos de OpenSSL (como línea de base) SJCL , CryptoJS , Node.js Crypto e incluso la API de criptografía web del W3C

Aquí están los ejemplos de SJCL:

Picadillo

var out = sjcl.hash.sha1.hash("The quick brown fox jumps over the lazy dog"); var hash = sjcl.codec.hex.fromBits(out) // "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"

HMAC

var key = sjcl.codec.utf8String.toBits("key"); var out = (new sjcl.misc.hmac(key, sjcl.hash.sha256)).mac("The quick brown fox jumps over the lazy dog"); var hmac = sjcl.codec.hex.fromBits(out) // "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8"

PBKDF2

var hmacSHA1 = function (key) { var hasher = new sjcl.misc.hmac( key, sjcl.hash.sha1 ); this.encrypt = function () { return hasher.encrypt.apply( hasher, arguments ); }; }; var passwordSalt = sjcl.codec.hex.toBits( "cf7488cd1e48e84990f51b3f121e161318ba2098aa6c993ded1012c955d5a3e8" ); var derivedKey = sjcl.misc.pbkdf2( "password", passwordSalt, 100, 256, hmacSHA1 ); var hexKey = sjcl.codec.hex.fromBits( derivedKey ); // c12b2e03a08f3f0d23f3c4429c248c275a728814053a093835e803bc8e695b4e

Nota : Esto requiere que incluya sha1.js además de sjcl.js.