Class: Rsa

Inherits:
Object
  • Object
show all
Defined in:
lib/struggle/rsa.rb

Overview

RSA工具,基于openssl,功能包括,秘钥生成,加密解密

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(keyfile) ⇒ Rsa

实例化Rsa类,keyfile是秘钥文件地址(公钥或私钥)文件格式pem



4
5
6
7
8
9
# File 'lib/struggle/rsa.rb', line 4

def initialize(keyfile)
  keystr = File.read(keyfile)
  if keystr
    @@rsa = OpenSSL::PKey::RSA.new(keystr)
  end
end

Class Method Details

.generate(dir) ⇒ Object

Rsa.generate(“/Users/apple/object”) => /Users/apple/object/private_key.pem ,public_key.pem 创建2048位秘钥文件



13
14
15
16
17
# File 'lib/struggle/rsa.rb', line 13

def self.generate(dir)
  pk = OpenSSL::PKey::RSA.generate(2048)
  File.write(dir+"/private_key.pem", pk.to_pem)
  File.write(dir+"/public_key.pem", pk.public_key.to_pem)
end

Instance Method Details

#private_decrypt(value) ⇒ Object

私钥解密



25
26
27
# File 'lib/struggle/rsa.rb', line 25

def private_decrypt(value)
  @@rsa.private_decrypt(Base64.decode64(value.force_encoding("UTF-8"))) unless value.blank?
end

#private_encrypt(value) ⇒ Object

私钥加密



20
21
22
# File 'lib/struggle/rsa.rb', line 20

def private_encrypt(value)
  Base64.encode64(@@rsa.private_encrypt(value.force_encoding("UTF-8"))) unless value.blank?
end

#public_decrypt(value) ⇒ Object

公钥解密



35
36
37
# File 'lib/struggle/rsa.rb', line 35

def public_decrypt(value)
  @@rsa.public_decrypt(Base64.decode64(value.force_encoding("UTF-8"))) unless value.blank?
end

#public_encrypt(value) ⇒ Object

公钥加密



30
31
32
# File 'lib/struggle/rsa.rb', line 30

def public_encrypt(value)
  Base64.encode64(@@rsa.public_encrypt(value.force_encoding("UTF-8"))) unless value.blank?
end

#sign(value) ⇒ Object

签名



40
41
42
# File 'lib/struggle/rsa.rb', line 40

def sign(value)
  @@rsa.sign("sha1", value)
end