首頁  >  文章  >  後端開發  >  php php_openssl.dll檔案有什麼用?

php php_openssl.dll檔案有什麼用?

怪我咯
怪我咯原創
2017-07-06 10:01:152062瀏覽

這篇文章是對php中php_openssl.dll的作用進行了詳細的分析介紹,需要的朋友參考下

一.openssl簡介
#資料加密是資訊資訊傳輸中的一個重要組成部分.任何資訊都以明文方式傳輸,確實是個很不安全的做法.所以,
需要對資料進行加密.將明文資料轉換為密文資料,再進行傳輸.

OpenSSL是一套用於SSL/TLS協定的加密工具,其作用有:
#1.產生私有金鑰.
2.產生憑證,即數位簽章憑證,它包含一個公有金鑰,可以用來單向的加密和解密資料.即,使用公鑰加密的資料,只能使用
私有金鑰解密.使用私鑰加密的資料,可以使用公鑰來解密.
3.計算資訊摘要.
4.SSL/TLS客戶端和伺服器端測試.
5.處理S/MIME標記和郵件的加密.

二.加密技術簡介.
加密,即將明文資料轉換為密文資料的過程.以起到對明文保密的作用.
加密演算法: 資料加密過程所採用的一種運算演算法.用於將明文轉換為密文.
密鑰: 加密演算法透過與金鑰進行某種運算,將明文資料加密,產生加密資料.解密時,加密演算法透過金鑰,
將加密資料再轉換為明文資料.
現今的加密技術,加密演算法是公開的,即所有人都知道加密所採用的運算方式.但只有使用金鑰才能進行
對密文的解密.所以,金鑰的保護,是資料安全的核心.

三.openssl工具使用簡介
1.私有金鑰產生方法

產生私有金鑰,可以使用不同的數位簽章演算法.以下分別介紹;

#採用DSA演算法
$ openssl dsaparam -noout -out dsakey0.pem -genkey 1024
#採用RSA演算法
$ openssl genrsa -out rsakey0.pem 1024
#採用RSARSA演算法,並使用密碼保護.在產生私鑰時,需要輸入一個密碼,用於保護私鑰.
#在使用這個私鑰進行加/解密操作時,也需要輸入這個密碼.
$ openssl genrsa -des3 -out rsakey1 .pem 10242.公用金鑰的產生方法
根據私鑰來產生公鑰
#產生dsa演算法的公鑰
$ openssl dsa -in dsakey0.pem -pubout -out dsakey0-pub.pem
#產生rsa演算法的公鑰
$ openssl rsa -in rsakey0.pem -pubout -out rsakey0-pub.pem3.自簽名憑證的產生方法
#產生DSA演算法的憑證
$ openssl req -x509 -key dsakey0.pem -days 365 -out mycert-dsa.pem -new
#產生RSA演算法的憑證
$ openssl req -x509 -key rsakey0.pem -days 365 -out mycert- rsa.pem -new

4.使用憑證進行郵件加密
#我們的明文信件內容:

$ cat test.txt
111111
222222
333333
444444
aaaaaa
使用憑證對明文信件進行加密,輸出到etest.txt檔案:
$ openssl smime -encrypt -in test.txt -out etest.txt mycert-rsa.pem查看加密後的密文內容:

$ cat etest.txt
MIME-Version: 1.0
Content-Dis position: attachment; filename="smime.p7m"
Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
Content-Transfer-Encoding: base64

MIIBYAYJKoZIhvcNAQcDoIIBUTCCAU0CAQAxgewwgekCAQAwUjBFMQswCQYDVQQG
EwJBVTETMBEGA1UECBMKU29tZS1TGF29970200105029 cyBQdHkgTHRkAgkAr71mh4NRX/UwDQYJKoZIhvcNAQEBBQAEgYCbrA1WBwQK
Zj7TcNtrxiDz qMBc/Lu063SLKvBK6mQMqT+FFOOFDz wPOKoaeL9RVqp9vgtiFC/uXis5UeyZCWS1z7Jsih8Aa+
Da/DQN0sOCX85OdK/TDewNx8mTaYBbVf4jBZBgkqhkiG9w0BBwEwGgYIdEwIwwidw.DxD.D.D.DRwDD.D.PwD.D.D.PD.D.D.PD缺索索索索+1ugDC6JknPL+rDYBCddcyPH+bMYjqrUP0hE/GQ5WSj
sv8CDkOUdvY5XG440yiAL3Z3ysI=使用私鑰進行解密,輸出到dtest.txt:

$ opensslopes smp. .txt查看解密後的信件內容,與原明文信件內容完全一致.

$ cat dtest.txt

111111

2222222

333333
4444444
aaaaaa



#5.簡單的檔案加密
明文檔案內容:
$ cat test.txt
1

22

333
4444
55555
Hello加密明文檔案,輸出為test.enc檔案,輸入」123123」作為加密密碼:

$$ openssl enc -aes-256-cbc -salt -in test.txt -out test.enc
enter aes-256-cbc encryption password:

Verifying - enter aes-256-cbc encryption password:對密文進行解密,輸入」123123」作為解密密碼:

$ openssl enc -d -aes-256-cbc -in test.enc
enter aes-256-cbc decryption password:
1
22
333
44444
55555
Hello

6.簡單的字串加密
採用base64方式進行加密:

#$ echo "encode me" | openssl enc -base64
ZW5jb2RlIG1lCg==解密時,需要知道加密演算法,才可解密:

$ echo "ZW5jb2RlIG1lCg==" | openssl en#$ echo "ZW5jb2RlIG1lCg==" | openssl enc -base64 -d
encode me

7.SSL客戶端和伺服器的測試
使用私鑰和憑證啟動SSL伺服器,"-www」的作用是,當客戶端連接伺服器時,發送一個狀態訊息網頁到客戶端.

openssl s_server -key mykey.pem -cert mycert.pem -www連接SSL伺服器到,客戶端會取得伺服器的憑證:

openssl s_client -connect localhost:4433

以上是php php_openssl.dll檔案有什麼用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn