解析php php_openssl.dll的作用_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

      推薦:使用php實(shí)現(xiàn)快錢(qián)支付功能
      本項(xiàng)目用zend framework框架實(shí)現(xiàn)的 modules/default/controllers/IndexController.php IndexController.php 復(fù)制代碼 代碼如下: ?php class IndexController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } pu

      本篇文章是對(duì)php中php_openssl.dll的作用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下  

      一.openssl簡(jiǎn)介
      數(shù)據(jù)加密是信息信息傳輸中的一個(gè)重要組成部分.任何信息都以明文方式傳輸,確實(shí)是個(gè)很不安全的做法.所以,
      需要對(duì)數(shù)據(jù)進(jìn)行加密.將明文數(shù)據(jù)轉(zhuǎn)換為密文數(shù)據(jù),再進(jìn)行傳輸.

      OpenSSL是一套用于SSL/TLS協(xié)議的加密工具,其作用有:
      1.生成私有密鑰.
      2.生成證書(shū),即數(shù)字簽名證書(shū),它包含一個(gè)公有密鑰,可以用來(lái)單向的加密和解密數(shù)據(jù).即,使用公鑰加密的數(shù)據(jù),只能使用
      私有密鑰解密.使用私鑰加密的數(shù)據(jù),可以使用公鑰來(lái)解密.
      3.計(jì)算信息摘要.
      4.SSL/TLS客戶端和服務(wù)器端測(cè)試.
      5.處理S/MIME標(biāo)記和郵件的加密.

      二.加密技術(shù)簡(jiǎn)介.
      加密,即將明文數(shù)據(jù)轉(zhuǎn)換為密文數(shù)據(jù)的過(guò)程.以起到對(duì)明文保密的作用.
      加密算法: 數(shù)據(jù)加密過(guò)程所采用的一種運(yùn)算算法.用于將明文轉(zhuǎn)換為密文.
      密鑰: 加密算法通過(guò)與密鑰進(jìn)行某種運(yùn)算,將明文數(shù)據(jù)進(jìn)行加密,生成加密數(shù)據(jù).解密時(shí),加密算法通過(guò)密鑰,
      將加密數(shù)據(jù)再轉(zhuǎn)換為明文數(shù)據(jù).
      現(xiàn)今的加密技術(shù),加密算法是公開(kāi)的,即所有人都知道加密所采用的運(yùn)算方式.但只有使用密鑰才能進(jìn)行
      對(duì)密文的解密.所以,密鑰的保護(hù),是數(shù)據(jù)安全的核心.

      三.openssl工具使用簡(jiǎn)介
      1.私有密鑰生成方法

      生成私有密鑰,可以使用不同的數(shù)字簽名算法.下面分別介紹;

      #采用DSA算法
      $ openssl dsaparam -noout -out dsakey0.pem -genkey 1024
      #采用RSA算法
      $ openssl genrsa -out rsakey0.pem 1024
      #采用RSA算法,并使用密碼保護(hù).在生成私鑰時(shí),需要輸入一個(gè)密碼,用于保護(hù)私鑰.
      #在使用這個(gè)私鑰進(jìn)行加/解密操作時(shí),也需要輸入這個(gè)密碼.
      $ openssl genrsa -des3 -out rsakey1.pem 10242.公用密鑰的生成方法
      根據(jù)私鑰來(lái)生成公鑰
      #生成dsa算法的公鑰
      $ openssl dsa -in dsakey0.pem -pubout -out dsakey0-pub.pem
      #生成rsa算法的公鑰
      $ openssl rsa -in rsakey0.pem -pubout -out rsakey0-pub.pem3.自簽名證書(shū)的生成方法
      #產(chǎn)生DSA算法的證書(shū)
      $ openssl req -x509 -key dsakey0.pem -days 365 -out mycert-dsa.pem -new
      #產(chǎn)生RSA算法的證書(shū)
      $ openssl req -x509 -key rsakey0.pem -days 365 -out mycert-rsa.pem -new

      4.使用證書(shū)進(jìn)行郵件加密
      我們的明文信件內(nèi)容:

      $ cat test.txt
      111111
      222222
      333333
      444444
      aaaaaa
      使用證書(shū)對(duì)明文信件進(jìn)行加密,輸出到etest.txt文件:
      $ openssl smime -encrypt -in test.txt -out etest.txt mycert-rsa.pem查看加密后的密文內(nèi)容:

      $ 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=使用私鑰進(jìn)行解密,輸出到dtest.txt文件:

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

      $ cat dtest.txt
      111111
      222222
      333333
      444444
      aaaaaa

      5.簡(jiǎn)單的文件加密
      明文文件內(nèi)容:

      $ 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:對(duì)密文進(jìn)行解密,輸入”123123”作為解密密碼:

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

      6.簡(jiǎn)單的字符串加密
      采用base64方式進(jìn)行加密:

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

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

      7.SSL客戶端和服務(wù)器的測(cè)試
      使用私鑰和證書(shū)啟動(dòng)SSL服務(wù)器,"-www”的作用是,當(dāng)客戶端連接服務(wù)器時(shí),發(fā)送一個(gè)狀態(tài)信息網(wǎng)頁(yè)到客戶端.

      openssl s_server -key mykey.pem -cert mycert.pem -www連接SSL服務(wù)器到,客戶端會(huì)獲得服務(wù)器的證書(shū):

      openssl s_client -connect localhost:4433

      分享:關(guān)于php 接口問(wèn)題(php接口主要也就是運(yùn)用curl,curl函數(shù))
      本篇文章是對(duì)php中的接口問(wèn)題(php接口主要也就是運(yùn)用curl,curl函數(shù))進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下 接口問(wèn)題 php調(diào)用接口最主要的就是使用curl抓取信息 復(fù)制代碼 代碼如下: $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //url地址 curl_setopt($c

      來(lái)源:模板無(wú)憂//所屬分類:PHP教程/更新時(shí)間:2013-07-03
      相關(guān)PHP教程