我有一个聊天软件,我用rsa算法加密聊天信息。
聊天时一切正常。但问题是当应用程序启动时,一些用户的消息列表就会被加载。这里很慢。
用户数:30-40
每个用户的消息数:40
我有两个嵌套循环
迭代用户的第一个循环
为每个用户迭代消息的第二个循环
我只是在嵌套循环中解密消息,但是加载非常慢。
为所有用户加载消息几乎需要20-25秒。我也尝试过混合加密(rsa+aes),但是速度非常慢,因为我在aes中用新的密钥加密每条消息,然后用公钥加密每条密钥。
有改进的建议吗?
aes密钥生成
SecureRandom rnd = new SecureRandom();
byte [] key = new byte [16];
rnd.nextBytes(key);
this.secretKey = new SecretKeySpec(key, algorithm);
this.cipher.init(Cipher.ENCRYPT_MODE, this.secretKey);
this.cipher.doFinal(input)
rsa密钥生成
this.keyGen = KeyPairGenerator.getInstance("RSA");
this.keyGen.initialize(1024);
this.pair = this.keyGen.generateKeyPair();
this.privateKey = this.pair.getPrivate();
this.publicKey = this.pair.getPublic();
1条答案
按热度按时间8fsztsew1#
或者对多个消息使用相同的对称密钥,或者使用比rsa更快的算法进行解密,例如ecies。您还可以查看是否有更快的rsa&aes本地实现。