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
esOpenSSL 0.9.8zg 14 July 2015
-
node --version
esv0.12.4
Los documentos de openssl tienen una página con todas las cadenas de cifrado válidas: http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS
Revisé todas las http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS y todo lo que había en mi mente y estos son los únicos errores que funcionan con el cifrado para crear un HMAC.
MD5
SHA
SHA1
SHA256
SHA384
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 .