dromara / hutool

🍬A set of tools that keep Java sweet.
https://hutool.cn
Other
28.91k stars 7.48k forks source link

SM2加密速度慢 SecureUtil.generateKeyPair("SM2");加入这段代码后由1000ms变几十毫秒 #3646

Closed shizhenglg closed 2 months ago

shizhenglg commented 2 months ago

版本情况

JDK版本: openjdk_8_201 hutool版本: 5.8.9(请确保最新尝试是否还有问题)

问题描述(包括截图)

  1. 复现代码
final SM2 sm2 = SmUtil.sm2("xxxxxx", "xxxxx");

// 加入这段代码之后 加密时间由1000ms变为几十ms
        SecureUtil.generateKeyPair("SM2");
        // 公钥加密,私钥解密
        long t1 = System.currentTimeMillis();
        byte[] encrypt = sm2.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
        long t2 = System.currentTimeMillis();
        System.out.println(t2-t1);
        byte[] decrypt = sm2.decrypt(encrypt, KeyType.PrivateKey);
        Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8));

加入以下代码为什么会变快呢? SecureUtil.generateKeyPair("SM2");

looly commented 1 month ago

原因来自Linux下随机种子生成的问题。

可以搜下相关内容,修改为非阻塞方式。