本篇文章是对php中php_openssl
dll的作用进行了详细的分析介绍
需要的朋友参考下
一openssl简介
数据加密是信息信息传输中的一个重要组成部分任何信息都以明文方式传输确实是个很不安全的做法所以
需要对数据进行加密将明文数据转换为密文数据再进行传输
OpenSSL是一套用于SSL/TLS协议的加密工具其作用有:
生成私有密钥
生成证书即数字签名证书它包含一个公有密钥可以用来单向的加密和解密数据即使用公钥加密的数据只能使用
私有密钥解密使用私钥加密的数据可以使用公钥来解密
计算信息摘要
SSL/TLS客户端和服务器端测试
处理S/MIME标记和邮件的加密
二加密技术简介
加密即将明文数据转换为密文数据的过程以起到对明文保密的作用
加密算法: 数据加密过程所采用的一种运算算法用于将明文转换为密文
密钥: 加密算法通过与密钥进行某种运算将明文数据进行加密生成加密数据解密时加密算法通过密钥
将加密数据再转换为明文数据
现今的加密技术加密算法是公开的即所有人都知道加密所采用的运算方式但只有使用密钥才能进行
对密文的解密所以密钥的保护是数据安全的核心
三openssl工具使用简介
私有密钥生成方法
生成私有密钥可以使用不同的数字签名算法下面分别介绍;
#采用DSA算法
$ openssl dsaparam noout out dsakeypem genkey
#采用RSA算法
$ openssl genrsa out rsakeypem
#采用RSA算法并使用密码保护在生成私钥时需要输入一个密码用于保护私钥
#在使用这个私钥进行加/解密操作时也需要输入这个密码
$ openssl genrsa des out rsakeypem 公用密钥的生成方法
根据私钥来生成公钥
#生成dsa算法的公钥
$ openssl dsa in dsakeypem pubout out dsakeypubpem
#生成rsa算法的公钥
$ openssl rsa in rsakeypem pubout out rsakeypubpem自签名证书的生成方法
#产生DSA算法的证书
$ openssl req x key dsakeypem days out mycertdsapem new
#产生RSA算法的证书
$ openssl req x key rsakeypem days out mycertrsapem new
使用证书进行邮件加密
我们的明文信件内容:
$ cat testtxt
aaaaaa
使用证书对明文信件进行加密输出到etesttxt文件:
$ openssl smime encrypt in testtxt out etesttxt mycertrsapem查看加密后的密文内容:
$ cat etesttxt
MIMEVersion:
ContentDisposition: attachment; filename="smimepm"
ContentType: application/xpkcsmime; smimetype=envelopeddata; name="smimepm"
ContentTransferEncoding: base
MIIBYAYJKoZIhvcNAQcDoIIBUTCCAUCAQAxgewwgekCAQAwUjBFMQswCQYDVQQG
EwJBVTETMBEGAUECBMKUtZSTdGFZTEhMBGAUEChMYSWZXJuZXQgVlk
ZlcyBQdHkgTHRkAgkArmhNRX/UwDQYJKoZIhvcNAQEBBQAEgYCbrAWBwQK
ZjTcNtrxiDzqMBc/LuSLKvBKmQMqT+npFOOFtzIKdFVkldHYyQhMZDSCyq
YUtGwOaDwJnAHRtUwPOKoaeLRVqpvgtiFC/uXisUeyZCWSzJsihAa+
Da/DQNsOCXOdK/TDewNxmTaYBbVfjBZBgkqhkiGwBBwEwGgYIKoZIhvcN
AwIwDgICAKAECNxsgiJs+ugDCJknPL+rDYBCddcyPH+bMYjqrUPhE/GQWSj
svCDkOUdvYXGyiALZysI=使用私钥进行解密输出到dtesttxt文件:
$ openssl smime decrypt in etesttxt inkey rsakeypem out dtesttxt查看解密后的信件内容与原明文信件内容完全一致
$ cat dtesttxt
aaaaaa
简单的文件加密
明文文件内容:
$ cat testtxt
Hello加密明文文件输出为testenc文件输入””作为加密密码:
$ openssl enc aescbc salt in testtxt out testenc
enter aescbc encryption password:
Verifying enter aescbc encryption password:对密文进行解密输入””作为解密密码:
$ openssl enc d aescbc in testenc
enter aescbc decryption password:
Hello
简单的字符串加密
采用base方式进行加密:
$ echo "encode me" | openssl enc base
ZWjbRlIGlCg==解密时需要知道加密算法才可解密:
$ echo "ZWjbRlIGlCg==" | openssl enc base d
encode me
SSL客户端和服务器的测试
使用私钥和证书启动SSL服务器"www”的作用是当客户端连接服务器时发送一个状态信息网页到客户端
openssl s_server key mykeypem cert mycertpem www连接SSL服务器到客户端会获得服务器的证书:
openssl s_client connect localhost: