日期:2014-05-20  浏览次数:20869 次

利用Cipher实现rsa的效率问题
小弟最近在处理一个rsa加密的问题,采用的是jdk自带的类库:
javax.crypto.Cipher,

公钥和密钥的生成使用的是:
java.security.KeyPairGenerator,
java.security.Key,
java.security.KeyPair,

在获得cipher时候采用的provider是
org.bouncycastle.jce.provider.BouncyCastleProvider,

加密的这段代码看起来很简单:
public static byte[] decrypt(Key key, byte[] raw) throws IllegalBlockSizeException, BadPaddingException, IOException, InvalidKeyException,
NoSuchAlgorithmException, NoSuchPaddingException
{
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);

for (int j = 0; raw.length - j * blockSize > 0; j++)
{
bout.write(cipher.doFinal(raw, j * blockSize, blockSize));
}
return bout.toByteArray();
}

key_size=2048
这样实现,确实可以对数据分块加密,但效率很底,加密一个大小为1K的文件,需要2秒多的时间,有点令人难以接受,不知道这里是否有人和我有同样的经历。我想提高下效率,不知道有什么可用的方法,希望能得到大家的指点,谢谢!


------解决方案--------------------
友情帮顶.没碰到过.

不过加密似乎一直都比较慢.想提高效率的话可以自己实现加密算法试试.