php實現非對稱加密

2021-08-02 09:53:43 字數 2293 閱讀 1703

使用非對稱加密主要是借助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。

1.安裝openssl和

php

的openssl擴充套件

2.生成私鑰:openssl genrsa 用於生成

rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護

[python]view plain

copy

1. openssl genrsa -out rsa_private_key.pem 1024    

3.生成公鑰:rsa命令用於處理rsa金鑰、格式轉換和列印資訊

[python]view plain

copy

1. openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem   

4.這裡我們使用私鑰加密,公鑰解密

[python]view plain

copy

1. <?php      

2. /**    

3. * 金鑰檔案的路徑

4. */      

5. $privatekeyfilepath = 'rsa_private_key.pem';      

6. /**    

7. * 公鑰檔案的路徑

8. */      

9. $publickeyfilepath = 'rsa_public_key.pem';      

10.       

11. extension_loaded('openssl') or die('php需要openssl擴充套件支援

');      

12.       

13. (file_exists($privatekeyfilepath) && file_exists($publickeyfilepath)) or die('金鑰或者公鑰的檔案路徑不正確');      

14. /**    

15. * 生成resource型別的金鑰,如果金鑰檔案內容被破壞,

openssl_pkey_get_private

函式返回

false    

16. */      

17. $privatekey = openssl_pkey_get_private(file_get_contents($privatekeyfilepath));      

18. /**    

19. * 生成resource型別的公鑰,如果公鑰檔案內容被破壞,

openssl_pkey_get_public

函式返回

false    

20. */      

21. $publickey = openssl_pkey_get_public(file_get_contents($publickeyfilepath));      

22.       

23. ($privatekey && $publickey) or die('金鑰或者公鑰不可用');      

24. /**    

25. * 原資料

26. */      

27. $originaldata = '加密前hahahaha';      

28. /**    

29. * 加密以後的資料,用於在網路上傳輸

30. */      

31. $encryptdata = '';      

32.       

33. echo '原資料為:', $originaldata, php_eol;      

34.       

35. ///用私鑰加密

36. if (openssl_private_encrypt($originaldata, $encryptdata, $privatekey))  else       

46.       

47.       

48. ///用公鑰解密

49.       

50. /**    

51. * 解密以後的資料

52. */      

53. $decryptdata ='';      

54.       

55. if (openssl_public_decrypt($encryptdata, $decryptdata, $publickey))  else       

PHP非對稱加密 RSA

對稱加密演算法是在加密和解密時使用同乙個金鑰。與對稱加密演算法不同,非對稱加密演算法需要兩個金鑰 公開金鑰 public key 和私有金鑰 private key 進行加密和解密。公鑰和金鑰是一對,如果公開金鑰對資料進行加密,只有對應私有金鑰才能解密 如果用私有金鑰對資料加密,那麼只有對應公有金鑰...

對稱加密 非對稱加密

區別在於加密金鑰和解密金鑰是否一樣,一樣則是對稱加密,不一樣則是非對稱加密。對稱加密計算量小,但若不同的客戶端使用不能的金鑰時,伺服器的複雜大。常用的對稱加密包括 des 3des aes des 3des使用的架構為feistel。des金鑰長度為56位,3des相容des,可設定3個56位密碼,...

對稱加密 非對稱加密

1 對稱加密 對稱加密採用了對稱密碼編碼技術,它的特點是檔案加密和解密使用相同的金鑰,即加密金鑰也可以用作解密金鑰,這種方法在密碼學中叫做對稱加密演算法,對稱加密演算法使用起來簡單快捷,金鑰較短,且破譯困難,除了資料加密標準 des 另乙個對稱金鑰加密系統是國際資料加密演算法 idea 它比des的...