1. 程式人生 > >php實現openssl RSA非對稱加密解密

php實現openssl RSA非對稱加密解密

今天跟第三方公司對接別人看了我寫的文件當時文件寫的是DES加密,然後我的一個回答都讓我覺得對不起別人,我說了是AES加密,當時AES和RSA加解密的原理我不瞭解導致我也誤解了別人,今天就特意去理解了一下,下面就看一下RSA非對稱的加解密吧

首先先來說一下RSA和AES的區別吧

RSA

非對稱加密,公鑰加密,私鑰解密,反之亦然。由於需要大數的乘冪求模等演算法,執行速度慢,不易於硬體實現。

通常私鑰長度有512bit,1024bit,2048bit,4096bit,長度越長,越安全,但是生成金鑰越慢,加解密也越耗時。

既然是加密,那肯定是不希望別人知道我的訊息,所以只有我才能解密,所以可得出公鑰負責加密,私鑰負責解密;

同理,既然是簽名,那肯定是不希望有人冒充我發訊息,只有我才能釋出這個簽名,所以可得出私鑰負責簽名,公鑰負責驗證。

AES

對稱加密,金鑰最長只有256個bit,執行速度快,易於硬體實現。由於是對稱加密,金鑰需要在傳輸前通訊雙方獲知。

基於以上特點,通常使用RSA來首先傳輸AES的金鑰給對方,然後再使用AES來進行加密通訊。

好啦說完區別就來看一下RSA如何實現加解密的吧

第一步需要去:http://web.chacuo.net/netrsakeypair  這裡生成兩隊公私鑰,我用的是2048位(bit),PKCS#8的格式生成公私鑰,我把公私鑰放到了一個檔案裡面所以,下面的程式碼就是RSA的加密程式碼:

好啦上面就是RSA的加密啦

下面來看一下RSA的解密的程式碼吧!

好啦這些就是RSA的加解密的程式碼啦!!!