私はnode.jsで暗号化しようとしましたが、ひどくオンラインサイトと同じ結果を得られません。node.jsのaes-ecbでバイナリデータを暗号化する
いくつかのバイナリデータをバイナリキーで暗号化したいとします。 nodejs siteのチュートリアルを使用しますが、参照データセットとは異なる結果があります。 私の参照データセットは、Cコードとし、2つのオンラインサイトで、Javaコードで検証されています http://aes.online-domain-tools.com/とhttps://www.hanewin.net/encrypt/aes/aes-test.htm
はあなたにそれらのサイトと同じように暗号化する方法のアイデアをお持ちですか? 私はそれがパディングかもしれないと思いますか?
ありがとうございます。 フランソワ
私の参照データセット:
key=8CBDEC62EB4DCA778F842B02503011B2
src=0002123401010100000000000000c631
encrypted=3edde3f1368328a1a37cf596bc8d4a7c
マイコード:
var key = new Buffer('8CBDEC62EB4DCA778F842B02503011B2', 'hex')
var src = new Buffer('0002123401010100000000000000c631', 'hex')
cipher = crypto.createCipher("aes-128-ecb", key)
result = cipher.update(src).toString('hex');
result += cipher.final().toString('hex');
"result : " + result
出力:
result : 4da42b57b99320067979086700651050e972f1febd1d506e5c90d3b5d3bc9424
'crypto.createCipher'を' crypto.createCipheriv'に変更し、空のIV( '" '')を渡します。また、パディングを無効にすることもできます。 –
** [ECBモード](https://crypto.stackexchange.com/q/14487/13022)**は絶対に使用しないでください。それは決定論的であり、したがって意味的に安全ではありません。最低でも[CBC](https://crypto.stackexchange.com/q/22260/13022)や[CTR](https://crypto.stackexchange.com/a/2378/)のようなランダム化モードを使用する必要があります13022)。 [パディング・オラクル攻撃](https://crypto.stackexchange.com/q/18185/13022)のような攻撃が不可能になるように、暗号文を認証する方が良いです。これは、GCMやEAXのような認証されたモード、または[encrypt-then-MAC](https://crypto.stackexchange.com/q/202/13022)スキームで行うことができます。 –