zl程序教程

您现在的位置是:首页 >  其它

当前栏目

解析phpphp_openssl.dll的作用

解析 作用 dll OpenSSL
2023-06-13 09:15:02 时间

一.openssl简介
数据加密是信息信息传输中的一个重要组成部分.任何信息都以明文方式传输,确实是个很不安全的做法.所以,
需要对数据进行加密.将明文数据转换为密文数据,再进行传输.

OpenSSL是一套用于SSL/TLS协议的加密工具,其作用有:
1.生成私有密钥.
2.生成证书,即数字签名证书,它包含一个公有密钥,可以用来单向的加密和解密数据.即,使用公钥加密的数据,只能使用
私有密钥解密.使用私钥加密的数据,可以使用公钥来解密.
3.计算信息摘要.
4.SSL/TLS客户端和服务器端测试.
5.处理S/MIME标记和邮件的加密.

二.加密技术简介.
加密,即将明文数据转换为密文数据的过程.以起到对明文保密的作用.
加密算法:数据加密过程所采用的一种运算算法.用于将明文转换为密文.
密钥:加密算法通过与密钥进行某种运算,将明文数据进行加密,生成加密数据.解密时,加密算法通过密钥,
将加密数据再转换为明文数据.
现今的加密技术,加密算法是公开的,即所有人都知道加密所采用的运算方式.但只有使用密钥才能进行
对密文的解密.所以,密钥的保护,是数据安全的核心.

三.openssl工具使用简介
1.私有密钥生成方法

生成私有密钥,可以使用不同的数字签名算法.下面分别介绍;

#采用DSA算法
$openssldsaparam-noout-outdsakey0.pem-genkey1024
#采用RSA算法
$opensslgenrsa-outrsakey0.pem1024
#采用RSA算法,并使用密码保护.在生成私钥时,需要输入一个密码,用于保护私钥.
#在使用这个私钥进行加/解密操作时,也需要输入这个密码.
$opensslgenrsa-des3-outrsakey1.pem10242.公用密钥的生成方法
根据私钥来生成公钥
#生成dsa算法的公钥
$openssldsa-indsakey0.pem-pubout-outdsakey0-pub.pem
#生成rsa算法的公钥
$opensslrsa-inrsakey0.pem-pubout-outrsakey0-pub.pem3.自签名证书的生成方法
#产生DSA算法的证书
$opensslreq-x509-keydsakey0.pem-days365-outmycert-dsa.pem-new
#产生RSA算法的证书
$opensslreq-x509-keyrsakey0.pem-days365-outmycert-rsa.pem-new

4.使用证书进行邮件加密
我们的明文信件内容:

$cattest.txt
111111
222222
333333
444444
aaaaaa
使用证书对明文信件进行加密,输出到etest.txt文件:
$opensslsmime  -encrypt-intest.txt-outetest.txtmycert-rsa.pem查看加密后的密文内容:

$catetest.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文件:

$opensslsmime -decrypt-inetest.txt-inkeyrsakey0.pem -outdtest.txt查看解密后的信件内容,与原明文信件内容完全一致.

$catdtest.txt
111111
222222
333333
444444
aaaaaa

5.简单的文件加密
明文文件内容:

$cattest.txt
1
22
333
4444
55555
Hello加密明文文件,输出为test.enc文件,输入”123123”作为加密密码:

$opensslenc-aes-256-cbc-salt-intest.txt-outtest.enc
enteraes-256-cbcencryptionpassword:
Verifying-enteraes-256-cbcencryptionpassword:对密文进行解密,输入”123123”作为解密密码:

$opensslenc-d-aes-256-cbc-intest.enc
enteraes-256-cbcdecryptionpassword:
1
22
333
4444
55555
Hello

6.简单的字符串加密
采用base64方式进行加密:

$echo"encodeme"|opensslenc-base64
ZW5jb2RlIG1lCg==解密时,需要知道加密算法,才可解密:

$echo"ZW5jb2RlIG1lCg=="|opensslenc-base64-d
encodeme

7.SSL客户端和服务器的测试
使用私钥和证书启动SSL服务器,"-www”的作用是,当客户端连接服务器时,发送一个状态信息网页到客户端.

openssls_server-keymykey.pem-certmycert.pem-www连接SSL服务器到,客户端会获得服务器的证书:

openssls_client-connectlocalhost:4433