SM4AESDES加解密算法性能比较

Posted 我爱看明朝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SM4AESDES加解密算法性能比较相关的知识,希望对你有一定的参考价值。

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");*/

    

性能比较结果

加密算法文件大小加密耗时(ms)解密耗时(ms)
SM45M1596841
AES5M201447
DES5M317669
SM4620KB689172
AES620KB109186
DES620KB53132
SM436KB48734
AES36KB2057
DES36KB914
SM46Bytes5050
AES6Bytes1324
DES6Bytes10

以上是关于SM4AESDES加解密算法性能比较的主要内容,如果未能解决你的问题,请参考以下文章

加密算法:DESAES等

RSA和DES算法的优缺点、比较

6. Java 加解密技术系列之 3DES

Android-IO加解密核心与dex文件改造过程分析

Android-IO加解密核心与dex文件改造过程分析

Android-IO加解密核心与dex文件改造过程分析