-1

私は現在、暗号プリミティブを使用するアプリケーションを構築しています。暗号化とハッシュには、javax.crypto と java.security パッケージを使用します。ベンチマークを行ったところ、ECB-AES-128 は SHA1 よりも高速であることが判明しました。AES テストに使用したコード:

    byte[] key = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    byte[] data = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

    SecretKeySpec encryptionKey = new SecretKeySpec(key, "AES");
    Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
    cipher.init(Cipher.ENCRYPT_MODE, encryptionKey);

    long start = System.currentTimeMillis();
    for (int i=0; i<10000000; i++)
    {
        cipher.doFinal(data);
    }
    long end = System.currentTimeMillis();      

    System.out.println("took: "+ (end-start));

ハッシング用

    MessageDigest md = MessageDigest.getInstance("SHA-1");
    byte[] data = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};


    long start = System.currentTimeMillis();
    for (int i=0; i<10000000; i++)
    {
        md.digest(data);
    }
    long end = System.currentTimeMillis();

    System.out.println("took:" + (end-start));

暗号化にかかる時間: ~4 秒。ハッシュにかかる時間: ~10 秒。構成: Core i5 3570-3.4Ghz、8Gb RAM (重要かどうかは不明)

暗号化はハッシュよりも時間がかからないのはなぜですか? ハッシュ関数はもっと速くなるはずです。私は何か間違ったことをしていますか?ありがとうございました

4

1 に答える 1