程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 解析php php_openssl.dll的作用

解析php php_openssl.dll的作用

編輯:關於PHP編程
    本篇文章是對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
    #采用RSA算法,並使用密碼保護.在生成私鑰時,需要輸入一個密碼,用於保護私鑰.
    #在使用這個私鑰進行加/解密操作時,也需要輸入這個密碼.
    $ 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-Disposition: attachment; filename="smime.p7m"
    Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
    Content-Transfer-Encoding: base64

    MIIBYAYJKoZIhvcNAQcDoIIBUTCCAU0CAQAxgewwgekCAQAwUjBFMQswCQYDVQQG
    EwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lk
    Z2l0cyBQdHkgTHRkAgkAr71mh4NRX/UwDQYJKoZIhvcNAQEBBQAEgYCbrA1WBwQK
    Zj7TcNtrxiDzqMBc/Lu063SLKvBK6mQMqT+npFOOFtzIKdFVkldH0YyQhMZDSCyq
    YUtGwOaDw6Jn0AHRt64UwPOKoaeL9RVqp9vgtiFC/uXis5UeyZCWS1z7Jsih8Aa+
    Da/DQN0sOCX85OdK/TDewNx8mTaYBbVf4jBZBgkqhkiG9w0BBwEwGgYIKoZIhvcN
    AwIwDgICAKAECNxsgiJ2s+1ugDC6JknPL+rDYBCddcyPH+bMYjqrUP0hE/GQ5WSj
    sv8CDkOUdvY5XG440yiAL3Z3ysI=使用私鑰進行解密,輸出到dtest.txt文件:

    $ openssl smime -decrypt -in etest.txt -inkey rsakey0.pem -out dtest.txt查看解密後的信件內容,與原明文信件內容完全一致.

    $ cat dtest.txt
    111111
    222222
    333333
    444444
    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
    4444
    55555
    Hello

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

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

    $ 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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved