golang中密钥长度为15360的RSA密钥对生成太慢需要做什么来解决这个问题?

问题描述

我尝试在创建go时使用15360密钥长度的RSA密钥对。

在Windows中,它会在约2分钟内生成密钥对。但是从VM那里,它监听了超过10分钟的时间,无法生成密钥对,并以套接字挂断结束。

privateKey,err := generatePrivateKey(15360)
if err != nil {
    log.Fatal(err.Error())
}

与Java实现相同,它在5次机会中在VM 3中生成密钥对的时间约为10分钟。

我可以通过什么方式改进它,以避免此类套接字挂起失败?

解决方法

我刚刚在RSA或{更快} ECC中使用nilsmagnus's gist在Go 1.14.6(Windows 10,无VM,4核)中测试了密钥的生成

我确实看到15360位RSA密钥(强度相当于256位对称密钥)需要10分钟以上的时间

2020/08/13 07:55:30 2048/224 (rsa-bitsize/ec-bitsize):    1245302200ns    1481396600ns
2020/08/13 07:55:34 3072/256 (rsa-bitsize/ec-bitsize):    2797005900ns      70036800ns
2020/08/13 07:56:41 7680/384 (rsa-bitsize/ec-bitsize):   33954637400ns   11623485000ns
2020/08/13 08:07:56 15360/521 (rsa-bitsize/ec-bitsize): 236410356300ns   17162054200ns

generation time 1.14

使用Go 1.15(昨天发布):

2020/08/13 08:11:40 2048/224 (rsa-bitsize/ec-bitsize):    1064054900ns   1486366000ns
2020/08/13 08:11:43 3072/256 (rsa-bitsize/ec-bitsize):    2799028300ns     70949100ns
2020/08/13 08:12:34 7680/384 (rsa-bitsize/ec-bitsize):   35293246300ns   9160064600ns
2020/08/13 08:24:10 15360/521 (rsa-bitsize/ec-bitsize): 236385736600ns  25844676400ns

没有明显的改善。

GO 1.15 times

因此,对于这种密钥长度,使用ECC密钥代替RSA会更快。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...