AES和RSA加密演算法調研
一、AES(DES的升級版)(對稱加密)執行時間
[1] 測試資料
這裡以讀取純文字檔案,一行一行的方式對字串進行加密,並把加密後的內容儲存到另外一個檔案中,計算檔案的加密時間。待檔案加密完成後,同樣通過一行一行的方式讀取加密內容並解密,把解密後的檔案儲存到解密檔案中。
注:在測試大檔案時,需要在虛擬機器中增加配置(-Xmx1535M -Xms1536M)設定記憶體大小
序號 |
原檔案大小(M) |
加密後文件大小(M) |
加密用時(秒) |
解密用時(秒) |
1 |
1.639 |
3.335 |
0 |
0 |
2 |
3.278 |
6.669 |
0 |
1 |
3 |
6.556 |
13.338 |
1 |
2 |
4 |
13.111 |
26.676 |
3 |
5 |
5 |
26.226 |
53.351 |
6 |
11 |
6 |
52.441 |
106.701 |
12 |
23 |
7 |
104.882 |
213.401 |
23 |
記憶體溢位(需要調整為按照位元組去解析) |
8 |
209.763 |
426.801 |
47 |
記憶體溢位記憶體溢位(需要調整為按照位元組去解析) |
9 |
839.051 |
1707.204 |
203 |
記憶體溢位記憶體溢位(需要調整為按照位元組去解析) |
10 |
1048.813 |
2134.005 |
255 |
記憶體溢位記憶體溢位(需要調整為按照位元組去解析) |
[2] 結論
1) AES加密的時間與被加密檔案的大小正線性增長,加密1G的檔案大概需要4分多鐘,加密速度還是很快的
2) 加密後的檔案大小是原始檔案大小的兩倍
3) 解密檔案所需時間是加密時間的兩倍(這個應該是加密檔案是原始檔案大小兩倍造成的)
二、RSA(非對稱加密)執行時間
[1] 測試資料
這裡以讀取到的文字內容,並對該內容進行RSA加密,加密後的內容儲存到一個檔案,然後,再根據RSA的私鑰對加密內容進行解密。下面是測試的時間:
注:在測試大檔案時,需要在虛擬機器中增加配置(-Xmx1535M -Xms1536M)設定記憶體大小
序號 |
原檔案大小(KB) |
加密後文件大小(KB) |
加密用時(秒) |
解密用時(秒) |
1 |
6 |
6 |
0 |
1 |
2 |
12 |
12 |
0 |
3 |
3 |
24 |
24 |
0 |
5 |
4 |
45 |
45 |
0 |
10 |
5 |
90 |
90 |
1 |
21 |
6 |
180 |
180 |
2 |
40 |
7 |
360 |
360 |
2 |
98 |
8 |
720 |
721 |
2 |
165 |
9 |
1440 |
1440 |
5 |
325 |
[2] 結論
1) RSA加密演算法加密時間很短,基本可以忽略不計。但是,在解密時,RSA顯的比較匹配,解密時間與解密檔案的大小呈現線性增長趨勢。加密1M的檔案大概需要5秒,但是解密卻需要4分鐘。
2) 加密後的檔案與原始檔案的大小基本相同
3) 解密的效率遠低於加密效率,按照這個時間去計算,加密1G的檔案需要1分鐘,但是解密卻需要65小時
相關推薦
AES和RSA加密演算法調研
一、AES(DES的升級版)(對稱加密)執行時間 [1] 測試資料 這裡以讀取純文字檔案,一行一行的方式對字串進行加密,並把加密後的內容儲存到另外一個檔案中,計算檔案的加密時間。待檔案加密完成
AES和RSA加密演算法入門Demo
首先感謝博主開園精神,此部落格是個人結合博主博文來進行一次個人的總結,加深學習印象。博主已經總結的非常的不錯,大家可以參考博主原文博主部落格地址 資料參考: 博主原始碼下載 百度百科 Java中有對稱加密和非對稱加密。 對稱加密演算法在加密和解密時
php aes和rsa加密的區別
php aes和rsa加密的區別RSA非對稱加密,公鑰加密,私鑰解密,反之亦然。由於需要大數的乘冪求模等算法,運行速度慢,不易於硬件實現。通常私鑰長度有512bit,1024bit,2048bit,4096bit,長度越長,越安全,但是生成密鑰越慢,加解密也越耗時。既然是加密,那肯定是不希望別人知道我的消息
RSA加密演算法生成公鑰和私鑰
Java RSA加密演算法生成公鑰和私鑰 import java.security.Key; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.interf
Android中自帶的RSA加密演算法和JAVA中的區別
java Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); android Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding"); 參考: http://stackoverflow
Android AES和RSA混合加密工具類實現
這幾天研究了一下android方面的加密技術,有RSA,md5,base64,AES等以及這幾種加密的混合加密,其他還好,在RSA和AES混合加密的時候出現點問題,就拿出來說一下。 遇到的問題是,從網上找到的AES工具類大多數時base64編
RSA加密演算法簡單分析
預備知識 1)RSA是第一個比較完善的公開金鑰演算法,它既能用於加密,也能用於數字簽名。RSA以它的三個發明者Ron Rivest,
RSA加密演算法驗證(C#實現)
RSA演算法簡單原理介紹(節選於網路) 假設Alice想要通過一個不可靠的媒體接收Bob的一條私人訊息。她可以用以下的方式來產生一個公鑰和一個私鑰: 隨意選擇兩個大的質數p和q,p不等於q,計算N=pq。 根據尤拉函式,求得r = (p-1)(q-1) 選擇一個小於 r
DES、AES、RSA加密的區別
BASE64:編碼方式(8位位元組程式碼),二進位制與字串相互轉換 MD5:Message Algorithm(訊息摘要演算法第五版),雜湊函式(雜湊演算法)_不可逆,壓縮性 DES:Data Encrytion Standard(資料加密標準),對應演算法是DEA &nbs
Python實現RSA加密演算法
基本思路在這裡說一下: 設p、q為質數 n = p*q fn = (p-1)*(q-1) 要滿足: 1 < e < fn , 且 e 與 fn 互質 滿足: e*d%fn = 1 (d>1) e 為公鑰 , d 為私鑰 把e 和 n 發給 客戶端 m 為明文 c =
快速理解RSA加密演算法
RSA公開金鑰密碼體制 所謂的公開金鑰密碼體制就是使用不同的加密金鑰與解密金鑰,是一種“由已知加密金鑰推匯出解密金鑰在計算上是不可行的”密碼體制。 在公開金鑰密碼體制中,加密金鑰(即公開金鑰)PK是公開資訊,而解密金鑰(即祕密金鑰)SK是需要保密的。加密演算法E和解密演算法D也都是公開的。雖然解密金鑰SK是由
從檔案加密解密到RSA加密演算法
1.檔案的加密解密 其實檔案的加密解密我們可以理解成在複製檔案時對檔案中的每一個位元組做一些操作,比如最簡單的就是加上一個常數或一個隨機數,還有取模等,只要把它變成不是原本的模樣就OK了。 以下給出生成隨機數的方式加密:MyKey是一個生成128
c# AES DES MD5加密演算法
MD5加密封裝 MD5常用加密FormsAuthentication.HashPasswordForStoringInConfigFile在Net Freamwork4.5以後就不在支援,下面整理了32位或16位下的幾個方法,以及不同寫法,最後一個由從老版本遷移過來,後續淘汰不用。 us
[Python]實現DES加密演算法和3DES加密演算法
pyDes.py ############################################################################# # Documentation
AES與RSA加密
AES using System; using System.Text; using System.Security.Cryptography; using System.IO; namespace winfAESEncryptDecrypt { public
RSA加密演算法java簡單實現
有問題請掃描下圖 簡單完整的程式碼,通過這個程式碼你將對RSA加密演算法在Java中的實現方法有一個初步的瞭解,這個類,你可以直接使用,水平高的,就自己修改完善下程式碼。 package security; import java.security.*; import j
JAVA利用RSA加密演算法的長度限制問題解決完整程式碼
package com.additional; import java.io.ByteArrayOutputStream; import java.security.Key; import java.security.KeyFactory; import jav
加密解密流程和各加密演算法的選擇、用途
加密演算法的分類: 雙向加密:分為對稱加密和非對稱加密。 對稱加密 採用單鑰密碼系統的加密方法,同一個金鑰可以同時用作資訊的加密和解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。 需要對加密
對稱加密----AES和DES加密、解密
呼叫AES/DES加密演算法包最精要的就是下面兩句話:Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);CBC是工作模式,DES一共有電子密碼本模式(
RSA加密演算法-前臺JS加密-後臺java解密
1、前臺使用jsencrypt的RSA加密: https://github.com/travist/jsencrypt/tree/v2.3.0 2、後臺使用java解密-包括生成公鑰和金鑰 package com.hand.hdmp.core.util; import java.