encryptionalgorithm列表
我试图find一个strings
列表,可以使用一个encryptionalgorithm来适应这个函数,取代SHA256
。
crypto.createHmac("SHA256", secret).update(string).digest('base64'),
我已经认识到crypto使用openssl
,并且这些algorithm是特定于运行node.js的每个系统的。
通过以下命令,您可以看到系统可用的所有algorithm的列表。
openssl list-cipher-algorithms openssl list-cipher-commands
我将这两个命令的内容输出到了这个要点 。
令我困扰的是SHA256
不在这两个列表中。
我真的很喜欢明确的algorithm列表。
这里的学习是ciphers
和hashes
是不同的,使用不同的algorithm。 使用节点的crypto
使用.getCiphers()
和.getHashes()
方法分别返回一个支持ciphers
和hashes
名称的数组。
var crypto = require('crypto') console.log(crypto.getCiphers()) console.log(crypto.getHashes())
其中logging以下密码:
[ '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 version
是OpenSSL 0.9.8zg 14 July 2015
-
node --version
是v0.12.4
openssl文档有一个列出所有有效的密码string的页面: http : //www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS
SHA-256不是密码,而是哈希algorithm 。 这可能就是为什么你没有在密码列表中find它的原因。 MD5和所有各种SHAalgorithm也是如此。
事实上,哈希algorithm正是你所需要的HMAC 。 如果要基于分组密码构buildMAC,则需要使用其他一些结构,如OMAC / CMAC , PMAC或CBC-MAC 。
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
河豚
山茶-128-CBC
山茶-128-CFB
山茶-128-CFB1
山茶-128-CFB8
山茶-128-ECB
山茶-128-OFB
茶花-192-CBC
茶花-192-CFB
茶花-192-CFB1
茶花-192-CFB8
茶花-192-ECB
茶花-192-OFB
茶花-256-CBC
茶花-256-CFB
茶花-256-CFB1
茶花-256 CFB8
茶花-256-ECB
茶花-256-OFB
camellia128
camellia192
camellia256
投
投-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-CBC
IDEA-CFB
想法-ECB
IDEA-OFB
RC2
RC2-40-CBC
RC2-64-CBC
RC2-CBC
RC2-CFB
RC2-ECB
RC2-OFB
RC4
RC4-40
RC4-HMAC-MD5
种子
种子-CBC
种子CFB
种子ECB
种子OFB
我检查了所有的密码string和我的要点 ,这是唯一的algorithm与密码创build一个HMAC。
MD5 SHA SHA1 SHA256 SHA384