我需要使用“ SEED”密码算法,过去似乎由加密模块支持。当我尝试使用crypto.getCiphers()
获取当前支持的密码时,得到了以下结果:
'aes-128-cbc',
'aes-128-cfb',
'aes-128-ctr',
'aes-128-ecb',
'aes-128-gcm',
'aes-128-ofb',
'aes-192-cbc',
'aes-192-ctr',
'aes-192-ecb',
'aes-192-gcm',
'aes-192-ofb',
'aes-256-cbc',
'aes-256-cfb',
'aes-256-ctr',
'aes-256-ecb',
'aes-256-gcm',
'aes-256-ofb',
'des-cbc',
'des-ecb',
'des-ede',
'des-ede-cbc',
'des-ede3-cbc',
'rc2-cbc',
'rc4'
我尝试使用许多Node版本,结果始终相同。另外,我尝试从应用程序中使用openssl,但SEED密码不再可用。如何在我的应用程序中添加对此密码算法的支持?已通过节点12、11、10、9、8进行测试。OpenSSL版本:LibreSSL 2.6.5
TIA!
SEED只是一个带有128位块和128位密钥的16轮Feistel网络,绝对不是我在生产中使用的东西。
关于它的价值SEED仍然存在于节点13。
在运行macOS 10.15.3
的node.js v13.7.0
上,我执行了此代码:
1 var crypto = require('crypto')
2 const util = require('util');
3 util.inspect.defaultOptions.maxArrayLength = null;
4
5
6 console.log(crypto.getCiphers())
确实将SEED列为受支持的密码:
[
'aes-128-cbc',
'aes-128-ccm',
'aes-128-cfb',
'aes-128-cfb1',
'aes-128-cfb8',
'aes-128-ctr',
'aes-128-ecb',
'aes-128-gcm',
'aes-128-ocb',
'aes-128-ofb',
'aes-128-xts',
'aes-192-cbc',
'aes-192-ccm',
'aes-192-cfb',
'aes-192-cfb1',
'aes-192-cfb8',
'aes-192-ctr',
'aes-192-ecb',
'aes-192-gcm',
'aes-192-ocb',
'aes-192-ofb',
'aes-256-cbc',
'aes-256-ccm',
'aes-256-cfb',
'aes-256-cfb1',
'aes-256-cfb8',
'aes-256-ctr',
'aes-256-ecb',
'aes-256-gcm',
'aes-256-ocb',
'aes-256-ofb',
'aes-256-xts',
'aes128',
'aes128-wrap',
'aes192',
'aes192-wrap',
'aes256',
'aes256-wrap',
'aria-128-cbc',
'aria-128-ccm',
'aria-128-cfb',
'aria-128-cfb1',
'aria-128-cfb8',
'aria-128-ctr',
'aria-128-ecb',
'aria-128-gcm',
'aria-128-ofb',
'aria-192-cbc',
'aria-192-ccm',
'aria-192-cfb',
'aria-192-cfb1',
'aria-192-cfb8',
'aria-192-ctr',
'aria-192-ecb',
'aria-192-gcm',
'aria-192-ofb',
'aria-256-cbc',
'aria-256-ccm',
'aria-256-cfb',
'aria-256-cfb1',
'aria-256-cfb8',
'aria-256-ctr',
'aria-256-ecb',
'aria-256-gcm',
'aria-256-ofb',
'aria128',
'aria192',
'aria256',
'bf',
'bf-cbc',
'bf-cfb',
'bf-ecb',
'bf-ofb',
'blowfish',
'camellia-128-cbc',
'camellia-128-cfb',
'camellia-128-cfb1',
'camellia-128-cfb8',
'camellia-128-ctr',
'camellia-128-ecb',
'camellia-128-ofb',
'camellia-192-cbc',
'camellia-192-cfb',
'camellia-192-cfb1',
'camellia-192-cfb8',
'camellia-192-ctr',
'camellia-192-ecb',
'camellia-192-ofb',
'camellia-256-cbc',
'camellia-256-cfb',
'camellia-256-cfb1',
'camellia-256-cfb8',
'camellia-256-ctr',
'camellia-256-ecb',
'camellia-256-ofb',
'camellia128',
'camellia192',
'camellia256',
'cast',
'cast-cbc',
'cast5-cbc',
'cast5-cfb',
'cast5-ecb',
'cast5-ofb',
'chacha20',
'chacha20-poly1305',
'des',
'des-cbc',
'des-cfb',
'des-cfb1',
'des-cfb8',
'des-ecb',
'des-ede',
'des-ede-cbc',
'des-ede-cfb',
'des-ede-ecb',
'des-ede-ofb',
'des-ede3',
'des-ede3-cbc',
'des-ede3-cfb',
'des-ede3-cfb1',
'des-ede3-cfb8',
'des-ede3-ecb',
'des-ede3-ofb',
'des-ofb',
'des3',
'des3-wrap',
'desx',
'desx-cbc',
'id-aes128-CCM',
'id-aes128-GCM',
'id-aes128-wrap',
'id-aes128-wrap-pad',
'id-aes192-CCM',
'id-aes192-GCM',
'id-aes192-wrap',
'id-aes192-wrap-pad',
'id-aes256-CCM',
'id-aes256-GCM',
'id-aes256-wrap',
'id-aes256-wrap-pad',
'id-smime-alg-CMS3DESwrap',
'idea',
'idea-cbc',
'idea-cfb',
'idea-ecb',
'idea-ofb',
'rc2',
'rc2-128',
'rc2-40',
'rc2-40-cbc',
'rc2-64',
'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',
'sm4',
'sm4-cbc',
'sm4-cfb',
'sm4-ctr',
'sm4-ecb',
'sm4-ofb'
]
问题不是NodeJS的版本,这是LibreSSL库的问题,因为它是特定于国家/地区的密码,所以可能不包含它。
其文档内容为:
包括AES,河豚,CAST,Chacha20,IDEA,DES,RC2和RC4的对称密码
[SE0中也没有SEED。
但是,如果我查看系统上存在的OpenSSL v1.1.1c,则SEED密码仍列在EVP_EncryptInit
documentation页面中。因此,您需要使用其他加密库作为后端。