解析phpphp_openssl.dll的作用
需要对数据进行加密.将明文数据转换为密文数据,再进行传输.
OpenSSL是一套用于SSL/TLS协议的加密工具,其作用有:
1.生成私有密钥.
2.生成证书,即数字签名证书,它包含一个公有密钥,可以用来单向的加密和解密数据.即,使用公钥加密的数据,只能使用
私有密钥解密.使用私钥加密的数据,可以使用公钥来解密.
3.计算信息摘要.
4.SSL/TLS客户端和服务器端测试.
5.处理S/MIME标记和邮件的加密.
加密算法:数据加密过程所采用的一种运算算法.用于将明文转换为密文.
密钥:加密算法通过与密钥进行某种运算,将明文数据进行加密,生成加密数据.解密时,加密算法通过密钥,
将加密数据再转换为明文数据.
现今的加密技术,加密算法是公开的,即所有人都知道加密所采用的运算方式.但只有使用密钥才能进行
对密文的解密.所以,密钥的保护,是数据安全的核心.
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
$cattest.txt
111111
222222
333333
444444
aaaaaa
$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
$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
$echo"encodeme"|opensslenc-base64
ZW5jb2RlIG1lCg==解密时,需要知道加密算法,才可解密:
$echo"ZW5jb2RlIG1lCg=="|opensslenc-base64-d
encodeme
openssls_server-keymykey.pem-certmycert.pem-www连接SSL服务器到,客户端会获得服务器的证书:
openssls_client-connectlocalhost:4433
相关文章
- XML&Xpath解析
- AQS同步组件-CountDownLatch解析和案例
- ArrayList源码解析
- mysql sock 文件解析及作用讲解
- MySQL8.0连接协议及3306、33060、33062端口的作用解析
- js解析顺序了解一下详解编程语言
- 函数功能解析Linux下atoi函数的作用(linuxatoi)
- 函数解析Linux atoi函数的作用(linuxatoi)
- 函数解析Linux 中atoi函数的作用(linuxatoi)
- 函数解析Linux中atoi函数的作用(linuxatoi)
- Linux FTP服务器的端口号解析(linuxftp端口号)
- 提升数据库性能,轻松上手!Oracle优化视频教程全面解析!(oracle优化视频教程)
- 深入理解 MySQL 参数: 详尽的解析与应用技巧(mysql参数详解)
- 深入解析Linux文件夹的含义及作用(linux文件夹含义)
- 深入MySQL井号的神奇作用解析(mysql中井号的作用)
- MySQL主键索引语法及作用解析(mysql中主键索引语法)
- 深入浅出MySQL解析主表的作用和意义(mysql中主表什么意思)
- MySQL中SET X的作用和用法解析(mysql中set x)
- MySQL中的EMP指什么解析MySQL中EMP的含义和作用(mysql中emp啥意思)
- MySQL中的DBA作用解析(mysql中dba是什么)
- 解析Oracle事务槽基础知识及其作用(oracle事物槽是什么)
- Oracle PDB用户初识和洞悉精准解析PDB用户管理策略(oracle pdb用户)
- PHP常用开发函数解析之数组篇[未完结]
- androidlayoutXML解析错误的解决方法
- 解析phpaddslashes()与addclashes()函数的区别和比较
- Android中Parcelable的作用实例解析