加密算法列表

时间:2013-01-05 04:49:22

标签: javascript algorithm node.js cryptography hmac

我正在尝试找到一个strings列表,可以使用加密算法来适应此函数,替换SHA256

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

我已经明白加密使用openssl,并且算法特定于运行node.js的每个系统。

使用以下命令,您可以看到系统可用的所有算法列表。

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

我已将这两个命令的内容输出到this gist

困扰我的是SHA256不在这些列表中。

我真的很喜欢最终的算法列表。

5 个答案:

答案 0 :(得分:40)

这里的学习是ciphershashes不同,并使用不同的算法。使用节点crypto使用.getCiphers().getHashes()方法返回一个数组,其中包含受支持的ciphershashes的名称。

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

记录以下密码:

[ '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' ]

以下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' ]

这是我的设置:

  • openssl versionOpenSSL 0.9.8zg 14 July 2015
  • node --versionv0.12.4

答案 1 :(得分:4)

openssl文档有一个列出所有有效密码字符串的页面: http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS

答案 2 :(得分:3)

SHA-256不是密码,而是hash algorithm。这可能就是为什么你没有在密码列表中找到它。 MD5和所有各种SHA算法也是如此。

实际上,哈希算法正是HMAC所需要的。如果要基于分组密码构造MAC,则需要使用其他构造,例如OMAC / CMACPMACCBC-MAC。< / p>

答案 3 :(得分:2)

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

答案 4 :(得分:0)

我检查了所有cipher strings以及gist中的所有内容,这些是使用密码创建HMAC的唯一算法。

MD5
SHA
SHA1
SHA256
SHA384