使用非對稱加密主要是借助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的...