php實現openssl RSA非對稱加密解密
阿新 • • 發佈:2018-12-12
今天跟第三方公司對接別人看了我寫的文件當時文件寫的是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的加解密的程式碼啦!!!