SM4、AES、DES の暗号化および復号化アルゴリズムのパフォーマンスの比較

SM4、AES、DES の暗号化および復号化アルゴリズムのパフォーマンスの比較

テストコード

  public void encryDecry() throws  Exception{
    
    
        SM4StringEncryptor sm4 = new SM4StringEncryptor();
        String path = "D:\\Users\\xlj\\Downloads\\sylog.txt";

        File file = new File(path);
        InputStreamReader reader = new InputStreamReader(new FileInputStream(path));

        BufferedReader br = new BufferedReader(reader);
        StringBuilder fileContent = new StringBuilder();

        String line = "";
        line = br.readLine();
        while (line != null) {
    
    
            line = br.readLine();
            fileContent.append(line);
        }
        System.out.println("文件原始大小:" + fileContent.length() /1024/1024 + "Mb");

        StringBuilder fileContent = new StringBuilder("xlj12442");
        long startTime = System.currentTimeMillis();

        String encryContent=  sm4.encrypt(fileContent.toString());
        System.out.println("sm4加密后:" + encryContent);
        System.out.println("sm4加密后文件大小:" + encryContent.length() /1024/1024 + "Mb");

        long endTime = System.currentTimeMillis();
        System.out.println("sm4加密耗时:" + (endTime - startTime) + "ms");

        String decryContent = sm4.decrypt(encryContent);
        System.out.println("sm4解密后:" + decryContent);
        System.out.println("sm4解密后文件大小:" + decryContent.length()  /1024/1024 + "Mb");
        long endTime1 = System.currentTimeMillis();
        System.out.println("sm4解密耗时:" + (endTime1 - endTime) + "ms");

        // aes
        byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();
        SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key);

        long aesStartTime = System.currentTimeMillis();
        encryContent = aes.encryptHex(decryContent);
        long esaEndTimeEncry = System.currentTimeMillis();

        System.out.println("aes加密后:" + encryContent);
        System.out.println("aes加密后文件大小:" + encryContent.length() /1024/1024 + "Mb");
        System.out.println("aes加密耗时:" + (esaEndTimeEncry - aesStartTime) + "ms");


        long aesEncryStartTime = System.currentTimeMillis();
        decryContent = aes.decryptStr(encryContent, CharsetUtil.CHARSET_UTF_8);
        long aesEncryEndTime = System.currentTimeMillis();
        System.out.println("aes解密后:" + decryContent);
        System.out.println("aes解密后文件大小:" + decryContent.length()  /1024/1024 + "Mb");
        System.out.println("aes解密耗时:" + (aesEncryEndTime - aesEncryStartTime) + "ms");


        // des
        key = SecureUtil.generateKey(SymmetricAlgorithm.DESede.getValue()).getEncoded();
        SymmetricCrypto des = new SymmetricCrypto(SymmetricAlgorithm.DESede, key);


        long desStartTime = System.currentTimeMillis();
        encryContent = des.encryptHex(decryContent);
        long desEndTimeEncry = System.currentTimeMillis();

        System.out.println("des ede加密后:" + encryContent);
        System.out.println("des ede加密后文件大小:" + encryContent.length() /1024/1024 + "Mb");
        System.out.println("des ede加密耗时:" + (desEndTimeEncry - desStartTime) + "ms");


        long desEncryStartTime = System.currentTimeMillis();
        decryContent = des.decryptStr(encryContent, CharsetUtil.CHARSET_UTF_8);
        long desEncryEndTime = System.currentTimeMillis();
        System.out.println("des ede解密后:" + decryContent);
        System.out.println("des ede解密后文件大小:" + decryContent.length()  /1024/1024 + "Mb");
        System.out.println("des ede解密耗时:" + (desEncryEndTime - desEncryStartTime) + "ms");*/

    }

性能比較結果

暗号化アルゴリズム ファイルサイズ 暗号化時間 (ミリ秒) 復号化時間 (ミリ秒)
SM4 5M 1596年 841
AES 5M 201 447
5M 317 669
SM4 620KB 689 172
AES 620KB 109 186
620KB 53 132
SM4 36KB 487 34
AES 36KB 20 57
36KB 9 14
SM4 6バイト 505 0
AES 6バイト 13 24
6バイト 1 0

5M ファイルの暗号化には時間がかかる

5M ファイルの復号化には時間がかかる

620KBの暗号化には時間がかかります

620KBの復号時間

36KBの暗号化は時間がかかる

36KBの復号化には時間がかかる

6バイトの暗号化には時間がかかる

6バイトの復号化に時間がかかる

おすすめ

転載: blog.csdn.net/u013565163/article/details/128047911