Crypto 應用 非對稱加密RSA

2021-08-11 02:42:33 字數 2679 閱讀 4342

1,非對稱加密rsa:

(1)乙方生成兩把金鑰(公鑰和私鑰)。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。

(2)甲方獲取乙方的公鑰,然後用它對資訊加密。

(3)乙方得到加密後的資訊,用私鑰解密。

2,使用cryptopp實現rsa:

cryptopp是一套非常完整的加密解密開源解決方案,如何使用這裡就不多說了,請自行google。

1 #include "

..\cryptopp562\randpool.h

"2 #include "

..\cryptopp562\osrng.h

"3 #include "

..\cryptopp562\rsa.h"4

5//待加密的字串

6string message = "

";7 printf("

message = %s, length = %d\n

", message.c_str(), strlen(message.c_str()));89

/*10

//自動生成隨機資料

11byte seed[600] = "";

12autoseededrandompool rnd;

13rnd.generateblock(seed, sizeof(seed));

14printf("seed = %s\n", (char *)seed, strlen((char *)seed));

1516

//生成加密的高質量偽隨機位元組播種池一體化後的熵

17randompool randpool;

18randpool.put(seed, sizeof(seed));

19*/

2021

autoseededrandompool rnd;

22 invertiblersafunction params;23

params.generaterandomwithkeysize(rnd, 1024

);24

25 rsa::privatekey privatekey(params

);26 rsa::publickey publickey(params

);27

28//

使用oaep模式

29//

rsaes_oaep_sha_decryptor pri(randpool, sizeof(seed));

30//

rsaes_oaep_sha_encryptor pub(pri);

31rsaes_oaep_sha_decryptor pri(privatekey);

32rsaes_oaep_sha_encryptor pub(publickey);

33 printf("

max plaintext length = %d,%d\n

", pri.fixedmaxplaintextlength(), pub.fixedmaxplaintextlength());

34if (pub.fixedmaxplaintextlength() >message.length())

35 44

45//

使用pkcs1v15模式

46//

rsaes_pkcs1v15_decryptor pri1(randpool, sizeof(seed));

47//

rsaes_pkcs1v15_encryptor pub1(pri1);

48rsaes_pkcs1v15_decryptor pri1(privatekey);

49rsaes_pkcs1v15_encryptor pub1(publickey);

50 printf("

max plaintext length = %d,%d\n

", pri1.fixedmaxplaintextlength(), pub1.fixedmaxplaintextlength());

51if (pub1.fixedmaxplaintextlength() >message.length())

52

cryptopp提供兩種rsa的padding模式,分別是oaep和pk1v15,padding模式跟安全性其實是緊密掛鉤的,有興趣的朋友可以去了解一下。

值得注意的是seed的大小決定了能夠加密的文字長度,可以通過修改seed的大小,執行檢視結果。seed越大,安全性越好,消耗的時間也越長,超過2048一般就能明顯感覺到時間很長了,一般使用1024已經具有足夠的安全性,反之seed太小的話fixedmaxplaintextlength為0,將不能加密任何文字,測試資料參照下表:

rsa的安全性依賴於大數分解,由於進行的都是大數計算,使得rsa最快的情況也比des慢上好幾倍,無論是軟體還是硬體實現。速度一直是rsa的缺陷。一般來說只用於少量資料加密。

cryptopp不只是提供加密解密演算法,還提供很多易用的工具,如autoseededrandompool, randompool, stringsource,stringsink,socketsource,socketsink,filesource,filesink等類,rsaes_oaep_sha_decryptor, rsaes_oaep_sha_encryptor等巨集定義,具體使用方法請閱讀原始碼。

非對稱加密及其應用

快應用 數學 生成 私鑰 公鑰 快應用 私鑰 程式 非對稱加密 加密的快應用 廠商 加密的快應用 公鑰 非對稱解密 快應用 伺服器 數學 生成 私鑰 公鑰 瀏覽器 公鑰 臨時通訊密碼 非對稱加密 加密的密碼 服務端 私鑰 加密的密碼 非對稱解密 臨時通訊密碼 服務端 臨時通訊密碼 資訊 對稱加密 加...

對稱加密 非對稱加密

區別在於加密金鑰和解密金鑰是否一樣,一樣則是對稱加密,不一樣則是非對稱加密。對稱加密計算量小,但若不同的客戶端使用不能的金鑰時,伺服器的複雜大。常用的對稱加密包括 des 3des aes des 3des使用的架構為feistel。des金鑰長度為56位,3des相容des,可設定3個56位密碼,...

對稱加密 非對稱加密

1 對稱加密 對稱加密採用了對稱密碼編碼技術,它的特點是檔案加密和解密使用相同的金鑰,即加密金鑰也可以用作解密金鑰,這種方法在密碼學中叫做對稱加密演算法,對稱加密演算法使用起來簡單快捷,金鑰較短,且破譯困難,除了資料加密標準 des 另乙個對稱金鑰加密系統是國際資料加密演算法 idea 它比des的...