关于openssl
openssl
1、SSL 是什么
SSL
是 Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet 上提供秘密性传输。
SSL
能使用户/服务器应用之间的通信不被攻击者监听,并且始终对服务器进行认证,还可选择对用户进行认证。
SSL
协议要求建立在可靠的传输层协议(TCP)之上。SSL
协议的优势在于它是与应用层协议无关的,高层的应用层协议(例如:HTTP,FTP,TELNET)能透明地建立于SSL
协议之上。
SSL
协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
2、openssl是什么
OpenSSL
是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL
协议,并提供丰富的应用程序供测试或其他的目的使用。
3、openssl 的加密算法
对称加密
OpenSSL
一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES
、DES
、Blowfish
、CAST
、IDEA
、RC2
、RC5
,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。
非对称加密
OpenSSL
一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用于密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。
4、一个简单的可逆的ruby字符串加密解密算法
#encoding: utf-8
class Des
require 'openssl'
require 'base64'
ALG = 'DES-EDE3-CBC'
KEY = 'uryeiyel'
DES_KEY = 'uygbfs3w'
class << self
def encode(str)
des = OpenSSL::Cipher::Cipher.new ALG
des.pkcs5_keyivgen KEY, DES_KEY
des.encrypt
cipher = des.update str
cipher << des.final
Base64.urlsafe_encode64 cipher
end
def decode(str)
str = Base64.urlsafe_decode64 str
des = OpenSSL::Cipher::Cipher.new ALG
des.pkcs5_keyivgen KEY, DES_KEY
des.decrypt
des.update(str) + des.final
end
end
end
secret_str = Des.encode("tianmi")
Des.decode(secret_str)
5、Ruby 加密方式
酷壳中提到:你可以一个安全的口令和一个快速的加密算法,或是一个不怎么安全口令和一个性能不好的加密算法。