当提到OpenSSL时,首先必须提到SSL。可能没有人希望他们的网络活动被其他网民监听到,当我们在日常上网时。因此就需要一种协议为我们的网络通信保驾护航。SSL协议就是基于这样的工作背景开发的,它能使用户跟服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,可选择的对用户进行认证。
通常情况下,SSL协议是基于可靠的传输层协议(TCP)建立的。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。在进行应用层协议通信之前,SSL协议就已经完成了加密算法的处理、通信密钥的协商和服务器认证工作。所有经过应用层协议传输的数据都会被加密,以确保通信的机密性。
s所谓加密,只不过是将明文通过某种机制转换成密文,网络通信时,使用的加密安全机制有:对称加密,公钥加密,单向加密。
对称加密的特性与缺陷:加密解密使用同一个密钥,将明文分割成固定大小的块,逐个进行加密。其缺陷在于通信双方要管理的密钥过多,而且密钥分发困难。其加密算法有:DES、3DES、AES。
公钥加密具有以下特征:其密钥成对出现,常用的加密算法包括RSA和DSA。其用途有:一是用于身份认证:发送方使用自己的私钥加密数据,接收方使用与之公钥解密;二是用于密钥交换:发送方使用接收方的公钥加密数据,接收方使用自己的私钥解密。公钥在私钥中提取出来
单向加密的特性:定向输出,有雪崩效应。该加密算法包括MD5、SHA1、SHA256、SHA384和SHA512。常用于提取数据的特征码。
在今年4月10日,安全协议OpenSSL曝出了本年最严重的安全漏洞,“心脏出血”。使人们开始重视这个开源协议。那么OpenSSL到底是什么呢?其实OpenSSL可以看作是SSL的库,由openssl多用途的命令行工具、公共加密库libcrypto、以及ssl协议库libssl三大组件组成。
openssl多用途的命令行工具可用于实现对称加密:
openssl enc -e -对称加密算法 -a -salt -in 需要加密的文件 -out 加密后的文件输出路径
例如,对/etc/fstab这个文件使用DES3算法加密: openssl enc -e -des3 -a -salt -in /etc/fstab -out /tmp/fstab
加密结果:
解密:openssl enc -d -对称加密算法 -a -salt -in 需要解密的文件 -out 解密后的文件输出路径
例如,将上面加密的文件解密: openssl enc -d -des3 -a -salt -in /tmp/fstab -out /tmp/Fstab
解密结果:
还可以用于公钥加密中的密钥交换:(umask 077;openssl genrsa -out 输出私钥文件路径)
从私钥中提取公钥: openssl rsa -in 私钥文件路径 -pubout
注:()表示命令在子shell中执行,umask 077 保证了私钥文件的访问权限
还可用于单向加密:openssl dgst -md5|-sha1 -out 文件输出路径 要加密的文件
例如,将/etc/passwd使用md5加密:openssl dgst -md5 -out /tmp/md5passwd /etc/passwd
还可以用于生成用户密码: openssl passwd -1 -salt SALT_STRING 用户密码
还可以用于生成随机数:openssl rand -hex 字节数
以上是如何进行OpenSSL基础中的加密及解密的详细内容。更多信息请关注PHP中文网其他相关文章!