解析php php_openssl.dll的作用
一.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ù)字簽名證書,它包含一個(gè)公有密鑰,可以用來單向的加密和解密數(shù)據(jù).即,使用公鑰加密的數(shù)據(jù),只能使用
私有密鑰解密.使用私鑰加密的數(shù)據(jù),可以使用公鑰來解密.
3.計(jì)算信息摘要.
4.SSL/TLS客戶端和服務(wù)器端測(cè)試.
5.處理S/MIME標(biāo)記和郵件的加密.
二.加密技術(shù)簡(jiǎn)介.
加密,即將明文數(shù)據(jù)轉(zhuǎn)換為密文數(shù)據(jù)的過程.以起到對(duì)明文保密的作用.
加密算法: 數(shù)據(jù)加密過程所采用的一種運(yùn)算算法.用于將明文轉(zhuǎn)換為密文.
密鑰: 加密算法通過與密鑰進(jìn)行某種運(yùn)算,將明文數(shù)據(jù)進(jìn)行加密,生成加密數(shù)據(jù).解密時(shí),加密算法通過密鑰,
將加密數(shù)據(jù)再轉(zhuǎn)換為明文數(shù)據(jù).
現(xiàn)今的加密技術(shù),加密算法是公開的,即所有人都知道加密所采用的運(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ù)私鑰來生成公鑰
#生成dsa算法的公鑰
$ openssl dsa -in dsakey0.pem -pubout -out dsakey0-pub.pem
#生成rsa算法的公鑰
$ openssl rsa -in rsakey0.pem -pubout -out rsakey0-pub.pem3.自簽名證書的生成方法
#產(chǎn)生DSA算法的證書
$ openssl req -x509 -key dsakey0.pem -days 365 -out mycert-dsa.pem -new
#產(chǎn)生RSA算法的證書
$ openssl req -x509 -key rsakey0.pem -days 365 -out mycert-rsa.pem -new
4.使用證書進(jìn)行郵件加密
我們的明文信件內(nèi)容:
$ cat test.txt
111111
222222
333333
444444
aaaaaa
使用證書對(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è)試
使用私鑰和證書啟動(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ù)器的證書:
openssl s_client -connect localhost:4433
- Windows安裝配置C/C++(VS2017)OpenSSL開發(fā)環(huán)境配置教程
- php開啟openssl的方法
- Linux下Nginx安裝的方法(pcre和openssl)
- PHP 7.1中利用OpenSSL代替Mcrypt加解密的方法詳解
- php實(shí)現(xiàn)基于openssl的加密解密方法
- php7安裝openssl擴(kuò)展方法
- C語(yǔ)言使用openSSL庫(kù)AES模塊實(shí)現(xiàn)加密功能詳解
- 詳解Linux(centos7)下安裝OpenSSL安裝圖文方法
- 不重新編譯PHP為php增加openssl模塊的方法
- linux openssl基礎(chǔ)介紹
- 一個(gè)檢測(cè)OpenSSL心臟出血漏洞的Python腳本分享
- php基于openssl的rsa加密解密示例
- php pki加密技術(shù)(openssl)詳解
- PHP的openssl加密擴(kuò)展使用小結(jié)(推薦)
- C語(yǔ)言使用openSSL庫(kù)DES模塊實(shí)現(xiàn)加密功能詳解
- 使用openssl 生成免費(fèi)證書的方法步驟
- Windows安裝Openssl并使用Openss生成公鑰私鑰
相關(guān)文章
php discuz 主題表和回帖表的設(shè)計(jì)
看看網(wǎng)上優(yōu)秀程序的源碼,分析優(yōu)缺點(diǎn),快速提高我們的水平。2009-03-03PHP最常用的ini函數(shù)分析 針對(duì)PHP.ini配置文件
php的配置函數(shù)就是幾個(gè)ini_*的函數(shù),主要是針對(duì)配置文件的操作,其實(shí)就四個(gè)函數(shù):ini_get、ini_set、ini_get_all、ini_restore。個(gè)人感覺最有用的就是ini_set和ini_get。2010-04-04php中利用str_pad函數(shù)生成數(shù)字遞增形式的產(chǎn)品編號(hào)
PHP開發(fā)項(xiàng)目中,在做產(chǎn)品編號(hào)時(shí),客戶反要求自動(dòng)生成產(chǎn)品編號(hào),格式如”QB00001″,數(shù)字遞增形式2013-09-09php中json_decode()和json_encode()的使用方法
json_decode對(duì)JSON格式的字符串進(jìn)行編碼而json_encode對(duì)變量進(jìn)行 JSON 編碼,需要的朋友可以參考下2012-06-06PHP5多態(tài)性與動(dòng)態(tài)綁定介紹
這篇文章主要介紹了PHP5多態(tài)性與動(dòng)態(tài)綁定介紹,本文主要講解了什么是多態(tài)性和什么是動(dòng)態(tài)綁定,并給出相應(yīng)實(shí)例,需要的朋友可以參考下2015-04-04