私はRSAとAESの速度をopensslとubuntuでテストしようとしています。
私はそれをテストするために次のコードを使いました。
echo -n "0123456789012345" > message.txt
openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -out public.pem -pubout
for i in {1..1000}
do
openssl rsautl -encrypt -inkey public.pem -pubin -in message.txt -out message_enc.txt
done
for i in {1..1000}
do
openssl rsautl -decrypt -inkey private.pem -in message_enc.txt -out message_dec.txt
done
for i in {1..1000}
do
openssl enc -e -aes-128-cbc -in message.txt -out aes.bin -K ddf -iv 345
done
結果:
$ time ./rsa_enc
real 0m3.697s
user 0m1.308s
sys 0m0.680s
$ time ./rsa_dec
real 0m14.273s
user 0m3.172s
sys 0m0.696s
$ time ./aes
real 0m3.790s
user 0m1.408s
sys 0m0.500s
RSA暗号化はAES暗号化より速いことがわかります。
AESを速くするべきではないですか。
ありがとう。
回答:
回答№1は5RSAとAESの暗号化の目的が異なるという@jbtuleの正しい点以外にも、ベンチマークの設計に根本的な欠陥があります。
ここで測定しているのは、RSAまたはAES暗号化ルーチンだけではありませんが、これらの実行全体 openssl
コマンド。
それは外でタイマーを使用することは理にかなっていることができますがその機能の1つがどのように機能しているかを測定する外部プログラムは、他のこと(コマンドラインパラメータの解析、正しいOpenSSLサブモジュールの検索、ファイルのオープン、ファイルの読み取りなど)時限機能を実行するのに必要な時間を使って。
ここでは、特にそのような短いテストメッセージでは、これは明らかに当てはまりません。
回答№2の場合は3
いずれにしてもどちらが速いのかが重要なのはなぜですか。あなたは本当に同じことのためにそれらを使うことはできません。 非常に少量のデータ.
しかし一般的にあなたが何かを暗号化する必要があるならRSAで大規模にあなたはそれをあなたの平文をするためにランダムなAESキーとaesを暗号化します、しかしそれはブロックサイズと復号化速度よりむしろ暗号化速度に基づくセキュリティ上の理由のためにより多くのものです。