靜態(tài)測(cè)試方法包括哪些 什么是RSA非對(duì)稱加密?
什么是RSA非對(duì)稱加密?非對(duì)稱密鑰——RSA算法RSA算法是最流行的公鑰密碼算法,使用長(zhǎng)度可以變化的密鑰。RSA是第一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。RSA算法原理如下:1.隨機(jī)選擇兩個(gè)大質(zhì)
什么是RSA非對(duì)稱加密?
非對(duì)稱密鑰——RSA算法RSA算法是最流行的公鑰密碼算法,使用長(zhǎng)度可以變化的密鑰。RSA是第一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。RSA算法原理如下:
1.隨機(jī)選擇兩個(gè)大質(zhì)數(shù)p和q,p不等于q,計(jì)算N=pq;
2.選擇一個(gè)大于1小于N的自然數(shù)e,e必須與(p-1)(q-1)互素。
3.用公式計(jì)算出d:d×e = 1 (mod (p-1)(q-1)) 。
4.銷毀p和q。最終得到的N和e就是“公鑰”,d就是“私鑰”,發(fā)送方使用N去加密數(shù)據(jù),接收方只有使用d才能解開(kāi)數(shù)據(jù)內(nèi)容。RSA的安全性依賴于大數(shù)分解,小于1024位的N已經(jīng)被證明是不安全的,而且由于RSA算法進(jìn)行的都是大數(shù)計(jì)算,使得RSA最快的情況也比DES慢上倍,這是RSA最大的缺陷,因此通常只能用于加密少量數(shù)據(jù)或者加密密鑰,但RSA仍然不失為一種高強(qiáng)度的算法。
200?使用RSA非對(duì)稱加密算法加密文件方法?
PHP中使用RSA,所用工具是openssl擴(kuò)展#從pfx文件中提取私鑰和證書(shū)(需要傳入密碼$password):openssl_pkcs12_read($file_content,$key,$password)$key["pkey"]=>私鑰$key["cert"]=>證書(shū)#解析x.509證書(shū)openssl_x509_read($cert)#以pkcs7加密標(biāo)準(zhǔn)加解密/簽名驗(yàn)簽數(shù)據(jù):需要注意pkcs7操作都需要使用一個(gè)臨時(shí)文件,多進(jìn)程時(shí)要考慮一下文件沖突問(wèn)題,還有別忘了最后釋放臨時(shí)文件。openssl_pkcs7_encrypt()/openssl_pkcs7_decrypt()openssl_pkcs7_sign()/openssl_pkcs7_verify()#從字符串中獲取公私鑰:openssl_pkey_get_private()/openssl_pkey_get_public()#RSA以pkcs#12標(biāo)準(zhǔn)加解密/簽名驗(yàn)簽數(shù)據(jù):openssl_private(public)_encrypt()/openssl_private(public)_decrypt()
非對(duì)稱加密的優(yōu)點(diǎn)是什么?
非對(duì)稱加密與對(duì)稱加密相比,其安全性更好:對(duì)稱加密的通信雙方使用相同的秘鑰,如果一方的秘鑰遭泄露,那么整個(gè)通信就會(huì)被破解。而非對(duì)稱加密使用一對(duì)秘鑰,一個(gè)用來(lái)加密,一個(gè)用來(lái)解密,而且公鑰是公開(kāi)的,秘鑰是自己保存的,不需要像對(duì)稱加密那樣在通信之前要先同步秘鑰。非對(duì)稱加密的缺點(diǎn)是加密和解密花費(fèi)時(shí)間長(zhǎng)、速度慢,只適合對(duì)少量數(shù)據(jù)進(jìn)行加密。在非對(duì)稱加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等。不同算法的實(shí)現(xiàn)機(jī)制不同,可參考對(duì)應(yīng)算法的詳細(xì)資料。