非對稱加密演算法 RSA

2021-09-27 06:45:19 字數 2081 閱讀 9896

rsa加密演算法是一種

非對稱加密演算法。

rsa

公開金鑰密碼體制:

加密金鑰(即公開金鑰)pk

是公開資訊,而解密金鑰(即秘密金鑰)

sk是需要保密的。

加密演算法

e和解密演算法

d也都是公開的。

雖然解密金鑰

sk是由公開金鑰

pk決定的,由於無法計算出大數

n的尤拉函式

phi(n)

,所以不能根據

pk計算出sk。

為提高保密強度,rsa金鑰至少為500位長,一般推薦使用1024位。

應用場景:

這就使加密的計算量很大。為減少計算量,在傳送資訊時,常採用傳統加密方法與

公開金鑰

加密方法相結合的方式。

即資訊採用改進的

des或

idea

金鑰加密,然後使用

rsa金鑰加密對話金鑰和資訊摘要。

使用openssl實現rsa的加解密功能:

#include #include #include #include #include #include #include using namespace std;

#define public_key_file "public.pem" //公鑰檔案

#define private_key_file "private.pem" //私鑰檔案

//***生成公鑰和私鑰檔案***

void generatekey()

//***通過公鑰加密資料***

string encodebybiopublickey(string data)

; char *ptmp = null;

ptmp = err_error_string(ulerr, szerrmsg);

printf("bio_read_publickey %s\n", szerrmsg);

return strret;

} int nlen = rsa_size(rsak);

char *pencode = new char[nlen + 1];

int ret = rsa_public_encrypt(data.length(), (const unsigned char*)data.c_str(),

(unsigned char *)pencode, rsak, rsa_pkcs1_padding);

if (ret >= 0)

delete pencode;

crypto_cleanup_all_ex_data();

bio_free_all(bp);

rsa_free(rsak);

return strret;

}//***通過私鑰解密資料***

string decodebybioprivatekey(string data)

; char *ptmp = null;

ptmp = err_error_string(ulerr, szerrmsg);

printf("%s\n", szerrmsg);

} int nlen = rsa_size(rsak);

char *pencode = new char[nlen + 1];

int nret = rsa_private_decrypt(data.length(), (const unsigned char*)data.c_str(), (unsigned char *)pencode, rsak, rsa_pkcs1_padding);

if (nret >= 0)

delete pencode;

crypto_cleanup_all_ex_data();

bio_free_all(bp);

rsa_free(rsak);

return strret;

}int main()

return 0;

}

RSA 非對稱加密演算法

1.對稱加密 甲方選擇某一種加密規則,對資訊進行加密 乙方使用同一種規則,對資訊進行解密。非對稱加密 乙方生成兩把金鑰 公鑰和私鑰 公鑰是公開的,任何人都可以獲得,私鑰則是保密的。甲方獲取乙方的公鑰,然後用它對資訊加密。乙方得到加密後的資訊,用私鑰解密。2.尤拉定理 rsa演算法的核心 可以大大簡化...

非對稱加密演算法 RSA

1 非對稱加密過程 國內使用的是雙證書體系 即使用者同時擁有簽名證書 和加密證書 兩張證書。簽名證書 是使用者的身份驗證是和ca協商的結果 加密證書 是用來對資訊進行加密,是使用者和秘鑰管理系統生成 過程是生成公鑰和私鑰的過程,基於rsa演算法實現 過程是ca對使用者的身份進行簽名,目的是驗證a的身...

非對稱加密演算法 RSA

rsa加密演算法於1977年由美國麻省理工學院的ronal rivest,adi shamir和len adleman三位年輕教授提出,並以三人的姓氏rivest,shamir和adleman命名為rsa演算法。這三位科學家榮獲2002年度圖靈獎,以表彰他們在演算法方面的突出貢獻。該演算法利用了數論...