关于openssl

2015-03-28  本文已影响610人  AQ王浩

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种分组加密算法分别是AESDESBlowfishCASTIDEARC2RC5,都支持电子密码本模式(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 加密方式

SHA

MD5

base64

如何防范密码被破解

酷壳中提到:你可以一个安全的口令和一个快速的加密算法,或是一个不怎么安全口令和一个性能不好的加密算法。

参考

在 OpenSSL 心脏攻击中 Rubyist 该怎么办
OpenSSL Ruby API
加密方式
Ruby 加密类

上一篇下一篇

猜你喜欢

热点阅读