Class: Rsa
- Inherits:
-
Object
- Object
- Rsa
- Defined in:
- lib/struggle/rsa.rb
Overview
RSA工具,基于openssl,功能包括,秘钥生成,加密解密
Class Method Summary collapse
-
.generate(dir) ⇒ Object
Rsa.generate(“/Users/apple/object”) => /Users/apple/object/private_key.pem ,public_key.pem 创建2048位秘钥文件.
Instance Method Summary collapse
-
#initialize(keyfile) ⇒ Rsa
constructor
实例化Rsa类,keyfile是秘钥文件地址(公钥或私钥)文件格式pem.
-
#private_decrypt(value) ⇒ Object
私钥解密.
-
#private_encrypt(value) ⇒ Object
私钥加密.
-
#public_decrypt(value) ⇒ Object
公钥解密.
-
#public_encrypt(value) ⇒ Object
公钥加密.
-
#sign(value) ⇒ Object
签名.
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 |