RSA解密算法优化(java)
来源:互联网 发布:linux下查看用户权限 编辑:程序博客网 时间:2024/06/05 07:55
公司在开发第三方支付平台的时候,安全模块用的是RSA来解密。结果效果很低。运行100解密线程就用了22秒!这个要求肯定是不符合我们要求的!所以我们到处在网上的找代码。结果还是没办法!还是很慢!最后我们同事找到一个问题,修改了下果然解密速度大幅提高!我特意写这篇文章!已做记录.
- /**
- * 解密
- * @param key 解密的密钥
- * @param raw 已经加密的数据
- * @return 解密后的明文
- * @throws Exception
- */
- public byte[] decrypt(Key key, byte[] raw) throws Exception {
- try {
- Cipher cipher = Cipher.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());
- cipher.init(cipher.DECRYPT_MODE, key);
- int blockSize = cipher.getBlockSize();
- ByteArrayOutputStream bout = new ByteArrayOutputStream(64);
- int j = 0;
- while (raw.length - j * blockSize > 0) {
- bout.write(cipher.doFinal(raw, j * blockSize, blockSize));
- j++;
- }
- return bout.toByteArray();
- } catch (Exception e) {
- throw new Exception(e.getMessage());
- }
- }
上面的文章就是以前的代码!在网上到处都可以找到!但是如果你多线程运行的话!结果会很慢很慢!
下面就是修改过后的代码:
Cipher cipher = Cipher.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());
这句替换成
public static synchronized Cipher getCipher()
throws NoSuchAlgorithmException, NoSuchPaddingException {
if (cipher == null) {
cipher = Cipher.getInstance("RSA", new BouncyCastleProvider());
}
return cipher;
}
效果会有比较大的提升!
我测试了运行100解密线程就用了1秒.基本符合公司的要求!具体原因不知道。
0 0
- RSA解密算法优化(java)
- RSA算法加解密(JAVA)
- Java,RSA加解密算法
- RSA算法加解密(JAVA)
- RSA加密解密算法Java
- [JAVA加解密]RSA算法、ElGamal算法
- 加密解密算法java实现(3)—RSA
- java实现RSA加密解密算法
- java RSA 加密解密算法 入门
- Java RSA 加密解密算法 入门
- java RSA 加密解密算法 入门
- Java RSA 加密解密算法 入门
- Java RSA 加密解密算法 入门
- Java,Android使用RSA 算法加解密
- JAVA加密解密之RSA算法
- Java RSA 加密解密算法 入门
- java使用RSA算法加密解密
- RSA算法 JS加密 JAVA解密
- myeclipse设置主题和颜色
- 攻击实例与防御
- MCU非常重要的通信接口--UART的调试
- Linux下模拟多线程的并发并发shell脚本
- createQuery is not valid without active transaction
- RSA解密算法优化(java)
- emWIN中实现了通用的链表结构
- C++平衡二叉树(AVL)
- jsp获得绝对路径
- 设计模式之单例设计模式
- 关于Android面试中如何应对内存优化
- Emulating dynamic scoping in GNU R
- SpringMVC 中整合JSON、XML视图一
- Java简介以及开发环境配置