class Struggle::Rsa

Public Class Methods

generate(dir) click to toggle source

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

# File lib/struggle/rsa.rb, line 14
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
new(keyfile) click to toggle source

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

# File lib/struggle/rsa.rb, line 5
def initialize(keyfile)
  keystr = File.read(keyfile)
  if keystr
    @@rsa = OpenSSL::PKey::RSA.new(keystr)
  end
end

Public Instance Methods

private_decrypt(value) click to toggle source

私钥解密

# File lib/struggle/rsa.rb, line 26
def private_decrypt(value)
  @@rsa.private_decrypt(Base64.decode64(value.force_encoding("UTF-8"))) unless value.blank?
end
private_encrypt(value) click to toggle source

私钥加密

# File lib/struggle/rsa.rb, line 21
def private_encrypt(value)
  Base64.encode64(@@rsa.private_encrypt(value.force_encoding("UTF-8"))) unless value.blank?
end
public_decrypt(value) click to toggle source

公钥解密

# File lib/struggle/rsa.rb, line 36
def public_decrypt(value)
  @@rsa.public_decrypt(Base64.decode64(value.force_encoding("UTF-8"))) unless value.blank?
end
public_encrypt(value) click to toggle source

公钥加密

# File lib/struggle/rsa.rb, line 31
def public_encrypt(value)
  Base64.encode64(@@rsa.public_encrypt(value.force_encoding("UTF-8"))) unless value.blank?
end
sign(value) click to toggle source

签名

# File lib/struggle/rsa.rb, line 41
def sign(value)
  @@rsa.sign("sha1", value)
end