PHP服務(wù)端與客戶端交互或者提供開(kāi)放API時(shí),通常需要對(duì)敏感的數(shù)據(jù)進(jìn)行加密,這時(shí)候rsa非對(duì)稱加密就能派上用處了。
舉個(gè)通俗易懂的例子,假設(shè)我們?cè)俚卿浺粋€(gè)網(wǎng)站,發(fā)送賬號(hào)和密碼,請(qǐng)求被攔截了。
密碼沒(méi)加密,那攻擊者就直接拿到了密碼,這是最搓的。
密碼加密了,是不可逆加密,那攻擊者只需要模擬那個(gè)請(qǐng)求即可登錄。
密碼加密了,是可逆加密,其中攜帶有時(shí)間等參數(shù),后臺(tái)可以根據(jù)時(shí)間等參數(shù)來(lái)判斷是否有效,但因?yàn)槭窃谇岸思用埽浼用芊绞揭材茉诖a中找到,找到加密方式就可以得出解密方式。
但是如果我們使用非對(duì)稱加密就可以避免以上問(wèn)題。
非對(duì)稱加密算法需要兩個(gè)密鑰來(lái)進(jìn)行加密和解密,這兩個(gè)秘鑰是公開(kāi)密鑰(public key,簡(jiǎn)稱公鑰)和私有密鑰(private key,簡(jiǎn)稱私鑰)。
工作過(guò)程如下,甲乙之間使用非對(duì)稱加密的方式完成了重要信息的安全傳輸。
乙方生成一對(duì)密鑰(公鑰和私鑰)并將公鑰向其它方公開(kāi)。
得到該公鑰的甲方使用該密鑰對(duì)機(jī)密信息進(jìn)行加密后再發(fā)送給乙方。
乙方再用自己保存的另一把專用密鑰(私鑰)對(duì)加密后的信息進(jìn)行解密。乙方只能用其專用密鑰(私鑰)解密由對(duì)應(yīng)的公鑰加密后的信息。
在傳輸過(guò)程中,即