最近公司將整個項目做了安全漏洞掃描,1萬多個漏洞,簡直崩潰,其中也包括非對稱加密的問題。項目要求非對稱加密使用算法RSA,大小2048,不推薦使用1024。這兩天一直在糾結,如果使用2048,那加解密性能不是要下降一節。非對稱加密隨著密鑰變長,安全性上升的同時性能也會有所下降。所以趕緊動起手來,測試以下性能jiu'j究竟怎麼樣?
1024位加解密耗時:
2048位加解密耗時:
總結:1024位加解密耗時差不都,2048位加解密耗時相差有點大,主要是在解密耗時。不過從中可以看出2048位解密所耗時間還是可以接受。當然安全,性能也要在具體的業務場景下進行取捨。
末尾附上測試源碼:
@Test public void testRSA(){ try{ // 生成密鑰對 KeyPair keyPair = RSAUtil.getKeyPair(); String privateKey = new String(Base64.encodeBase64(keyPair.getPrivate().getEncoded())); String publicKey = new String(Base64.encodeBase64(keyPair.getPublic().getEncoded())); System.out.println("私鑰:" + privateKey); System.out.println("公鑰:" + publicKey); // RSA加密 String data = "您好啊 RSA!"; System.out.println("加密前內容:" + data); //開始計時 long startTime = System.currentTimeMillis() ; List list = new ArrayList <>() ; for(int i=0; i<10000>