tipos simetrico simetrica metodos matematica informatica criptografia cifrado asimetrico asimetrica javascript algorithm node.js cryptography hmac

javascript - simetrico - Lista de algoritmos criptográficos



metodos de cifrado (5)

Estoy tratando de encontrar una lista de strings que puedan usarse como algoritmo de cifrado para encajar en esta función, reemplazando SHA256 .

crypto.createHmac("SHA256", secret).update(string).digest(''base64''),

Llegué a la conclusión de que crypto utiliza openssl y que los algoritmos son específicos para cada sistema que ejecuta node.js.

Con los siguientes comandos puede ver una lista de todos los algoritmos disponibles para su sistema.

openssl list-cipher-algorithms openssl list-cipher-commands

He enviado el contenido de esos dos comandos a esta esencia .

Lo que me molesta es que SHA256 no está en ninguna de esas listas.

Realmente me gustaría la lista de algoritmos definitiva.


CAST-cbc

aes-128-cbc

aes-128-cbc-hmac-sha1

aes-128-cfb

aes-128-cfb1

aes-128-cfb8

aes-128-ctr

aes-128-ecb

aes-128-gcm

aes-128-ofb

aes-128-xts

aes-192-cbc

aes-192-cfb

aes-192-cfb1

aes-192-cfb8

aes-192-ctr

aes-192-ecb

aes-192-gcm

aes-192-ofb

aes-256-cbc

aes-256-cbc-hmac-sha1

aes-256-cfb

aes-256-cfb1

aes-256-cfb8

aes-256-ctr

aes-256-ecb

aes-256-gcm

aes-256-ofb

aes-256-xts

aes128

aes192

aes256

bf

bf-cbc

bf-cfb

bf-ecb

bf-ofb

pez globo

camelia-128-cbc

camelia-128-cfb

camelia-128-cfb1

camelia-128-cfb8

camelia-128-ecb

camelia-128-ofb

camelia-192-cbc

camelia-192-cfb

camelia-192-cfb1

camelia-192-cfb8

camelia-192-ecb

camelia-192-ofb

camelia-256-cbc

camelia-256-cfb

camelia-256-cfb1

camelia-256-cfb8

camelia-256-ecb

camelia-256-ofb

camelia128

camelia192

camelia256

emitir

cast-cbc

cast5-cbc

cast5-cfb

cast5-ecb

cast5-ofb

des

des-cbc

des-cfb

des-cfb1

des-cfb8

des-ecb

des-ede

des-ede-cbc

des-ede-cfb

des-ede-ofb

des-ede3

des-ede3-cbc

des-ede3-cfb

des-ede3-cfb1

des-ede3-cfb8

des-ede3-ofb

des-ofb

des3

desintoxicación

desx-cbc

id-aes128-GCM

id-aes192-GCM

id-aes256-GCM

idea

idea-cbc

idea-cfb

idea-ecb

idea de ofb

rc2

rc2-40-cbc

rc2-64-cbc

rc2-cbc

rc2-cfb

rc2-ecb

rc2-ofb

rc4

rc4-40

rc4-hmac-md5

semilla

semilla-cbc

semilla-cfb

semilla-ecb

semilla-deb


El aprendizaje aquí es que los ciphers y los hashes son diferentes y utilizan diferentes algoritmos. Con el .getCiphers() crypto de nodo, utilice los .getCiphers() y .getHashes() para devolver una matriz con los nombres de los ciphers y hashes respectivamente.

var crypto = require(''crypto'') console.log(crypto.getCiphers()) console.log(crypto.getHashes())

Que registra los siguientes cifrados:

[ ''CAST-cbc'', ''aes-128-cbc'', ''aes-128-cbc-hmac-sha1'', ''aes-128-cfb'', ''aes-128-cfb1'', ''aes-128-cfb8'', ''aes-128-ctr'', ''aes-128-ecb'', ''aes-128-gcm'', ''aes-128-ofb'', ''aes-128-xts'', ''aes-192-cbc'', ''aes-192-cfb'', ''aes-192-cfb1'', ''aes-192-cfb8'', ''aes-192-ctr'', ''aes-192-ecb'', ''aes-192-gcm'', ''aes-192-ofb'', ''aes-256-cbc'', ''aes-256-cbc-hmac-sha1'', ''aes-256-cfb'', ''aes-256-cfb1'', ''aes-256-cfb8'', ''aes-256-ctr'', ''aes-256-ecb'', ''aes-256-gcm'', ''aes-256-ofb'', ''aes-256-xts'', ''aes128'', ''aes192'', ''aes256'', ''bf'', ''bf-cbc'', ''bf-cfb'', ''bf-ecb'', ''bf-ofb'', ''blowfish'', ''camellia-128-cbc'', ''camellia-128-cfb'', ''camellia-128-cfb1'', ''camellia-128-cfb8'', ''camellia-128-ecb'', ''camellia-128-ofb'', ''camellia-192-cbc'', ''camellia-192-cfb'', ''camellia-192-cfb1'', ''camellia-192-cfb8'', ''camellia-192-ecb'', ''camellia-192-ofb'', ''camellia-256-cbc'', ''camellia-256-cfb'', ''camellia-256-cfb1'', ''camellia-256-cfb8'', ''camellia-256-ecb'', ''camellia-256-ofb'', ''camellia128'', ''camellia192'', ''camellia256'', ''cast'', ''cast-cbc'', ''cast5-cbc'', ''cast5-cfb'', ''cast5-ecb'', ''cast5-ofb'', ''des'', ''des-cbc'', ''des-cfb'', ''des-cfb1'', ''des-cfb8'', ''des-ecb'', ''des-ede'', ''des-ede-cbc'', ''des-ede-cfb'', ''des-ede-ofb'', ''des-ede3'', ''des-ede3-cbc'', ''des-ede3-cfb'', ''des-ede3-cfb1'', ''des-ede3-cfb8'', ''des-ede3-ofb'', ''des-ofb'', ''des3'', ''desx'', ''desx-cbc'', ''id-aes128-GCM'', ''id-aes192-GCM'', ''id-aes256-GCM'', ''idea'', ''idea-cbc'', ''idea-cfb'', ''idea-ecb'', ''idea-ofb'', ''rc2'', ''rc2-40-cbc'', ''rc2-64-cbc'', ''rc2-cbc'', ''rc2-cfb'', ''rc2-ecb'', ''rc2-ofb'', ''rc4'', ''rc4-40'', ''rc4-hmac-md5'', ''seed'', ''seed-cbc'', ''seed-cfb'', ''seed-ecb'', ''seed-ofb'' ]

Y los siguientes hashes :

[ ''DSA'', ''DSA-SHA'', ''DSA-SHA1'', ''DSA-SHA1-old'', ''RSA-MD4'', ''RSA-MD5'', ''RSA-MDC2'', ''RSA-RIPEMD160'', ''RSA-SHA'', ''RSA-SHA1'', ''RSA-SHA1-2'', ''RSA-SHA224'', ''RSA-SHA256'', ''RSA-SHA384'', ''RSA-SHA512'', ''dsaEncryption'', ''dsaWithSHA'', ''dsaWithSHA1'', ''dss1'', ''ecdsa-with-SHA1'', ''md4'', ''md4WithRSAEncryption'', ''md5'', ''md5WithRSAEncryption'', ''mdc2'', ''mdc2WithRSA'', ''ripemd'', ''ripemd160'', ''ripemd160WithRSA'', ''rmd160'', ''sha'', ''sha1'', ''sha1WithRSAEncryption'', ''sha224'', ''sha224WithRSAEncryption'', ''sha256'', ''sha256WithRSAEncryption'', ''sha384'', ''sha384WithRSAEncryption'', ''sha512'', ''sha512WithRSAEncryption'', ''shaWithRSAEncryption'', ''ssl2-md5'', ''ssl3-md5'', ''ssl3-sha1'', ''whirlpool'' ]

Aquí está mi configuración:

  • openssl version es OpenSSL 0.9.8zg 14 July 2015
  • node --version es v0.12.4



SHA-256 no es un cifrado, es un algoritmo hash . Probablemente por eso no lo encontraste en una lista de cifrados. Lo mismo ocurre con MD5 y todos los diversos algoritmos SHA.

De hecho, un algoritmo hash es exactamente lo que necesita para HMAC . Si desea construir un MAC basado en un cifrado de bloque, necesitará usar alguna otra construcción, como OMAC / CMAC , PMAC o CBC-MAC .