Javascript 加密算法列表

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/14168703/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-24 15:53:48  来源:igfitidea点击:

Crypto algorithm list

javascriptalgorithmnode.jscryptographyhmac

提问by ThomasReggi

I'm trying to find a list of stringsthat can be used a a crypto algorithm to fit into this function, replacing SHA256.

我试图找到一个strings可以使用加密算法来适应这个函数的列表,替换SHA256.

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

I've come to the understanding that crypto uses openssl, and that the algorithms are specific to each system running node.js.

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

With the following commands you can see a list of all algorithms available for your system.

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

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

I've outputted the content of those two commands to this gist.

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

What bothers me is that SHA256is not in either of those lists.

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

I would really like the definitive algorithm list.

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

回答by ThomasReggi

The learning here is that ciphersand hashesare different and use different algorithms. With node's cryptouse .getCiphers()and .getHashes()methods to return an array with the names of the supported ciphersand hashesrespectively.

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

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

Which logs the following ciphers:

其中记录了以下密码:

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

And the following hashes:

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

Here's my settings:

这是我的设置:

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

回答by John Brodie

The openssl docs have a page listing all valid cipher strings: http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS

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

回答by user2081518

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

回答by Ilmari Karonen

SHA-256is not a cipher, it is a hash algorithm. That is probably why you didn't find it in a list of ciphers. The same goes for MD5 and all the various SHA algorithms.

SHA-256不是密码,而是散列算法。这可能就是您没有在密码列表中找到它的原因。MD5 和所有各种 SHA 算法也是如此。

Indeed, a hash algorithm is exactly what you need for HMAC. If you want to construct a MAC based on a block cipher, you'll need to use some other construction, such as OMAC/CMAC, PMACor CBC-MAC.

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

回答by ThomasReggi

I checked all of the cipher stringsand everything in my gistand these are the only algo's that work with cipher to create a HMAC.

我检查了所有密码字符串和我的要点中的所有内容,这些是唯一使用密码创建 HMAC 的算法。

MD5
SHA
SHA1
SHA256
SHA384