不對稱加密算法 什么是RSA非對稱加密?
什么是RSA非對稱加密?非對稱密鑰——RSA算法RSA算法是最流行的公鑰密碼算法,使用長度可以變化的密鑰。RSA是第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。RSA算法原理如下:1.隨機選擇兩個大質(zhì)
什么是RSA非對稱加密?
非對稱密鑰——RSA算法RSA算法是最流行的公鑰密碼算法,使用長度可以變化的密鑰。RSA是第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。RSA算法原理如下:
1.隨機選擇兩個大質(zhì)數(shù)p和q,p不等于q,計算N=pq;
2.選擇一個大于1小于N的自然數(shù)e,e必須與(p-1)(q-1)互素。
3.用公式計算出d:d×e = 1 (mod (p-1)(q-1)) 。
4.銷毀p和q。最終得到的N和e就是“公鑰”,d就是“私鑰”,發(fā)送方使用N去加密數(shù)據(jù),接收方只有使用d才能解開數(shù)據(jù)內(nèi)容。RSA的安全性依賴于大數(shù)分解,小于1024位的N已經(jīng)被證明是不安全的,而且由于RSA算法進行的都是大數(shù)計算,使得RSA最快的情況也比DES慢上倍,這是RSA最大的缺陷,因此通常只能用于加密少量數(shù)據(jù)或者加密密鑰,但RSA仍然不失為一種高強度的算法。
200?使用RSA非對稱加密算法加密文件方法?
PHP中使用RSA,所用工具是openssl擴展#從pfx文件中提取私鑰和證書(需要傳入密碼$password):openssl_pkcs12_read($file_content,$key,$password)$key["pkey"]=>私鑰$key["cert"]=>證書#解析x.509證書openssl_x509_read($cert)#以pkcs7加密標準加解密/簽名驗簽數(shù)據(jù):需要注意pkcs7操作都需要使用一個臨時文件,多進程時要考慮一下文件沖突問題,還有別忘了最后釋放臨時文件。openssl_pkcs7_encrypt()/openssl_pkcs7_decrypt()openssl_pkcs7_sign()/openssl_pkcs7_verify()#從字符串中獲取公私鑰:openssl_pkey_get_private()/openssl_pkey_get_public()#RSA以pkcs#12標準加解密/簽名驗簽數(shù)據(jù):openssl_private(public)_encrypt()/openssl_private(public)_decrypt()