Module: Unidom::Common::Concerns::Aes256Cryptor::ClassMethods

Defined in:
app/models/unidom/common/concerns/aes256_cryptor.rb

Instance Method Summary collapse

Instance Method Details

#aes_256_paddingObject

返回 AES-256 加密使用的 padding 。如果有 #cryption_padding 方法,则返回 #cryption_padding 方法的值,否则返回 9 。



88
89
90
# File 'app/models/unidom/common/concerns/aes256_cryptor.rb', line 88

def aes_256_padding
  respond_to?(:cryption_padding) ? cryption_padding : 9
end

#decrypt(encoded, key: nil) ⇒ Object

将密文 encoded 用秘钥 key 进行解密。如:decrypt encoded, key: aes256_key

Raises:

  • (ArgumentError)


72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'app/models/unidom/common/concerns/aes256_cryptor.rb', line 72

def decrypt(encoded, key: nil)

  raise ArgumentError.new('The encoded argument is required.') if encoded.blank?
  raise ArgumentError.new('The key argument is required.')     if key.blank?

  cipher = OpenSSL::Cipher::AES.new(256, 'CBC')
  cipher.decrypt
  cipher.padding = aes_256_padding
  cipher.key     = key

  cipher.update(encoded)+cipher.final

end

#encrypt(message, key: nil) ⇒ Object

将明文 message 用秘钥 key 进行加密。如:encrypt ‘clear text’ 或encrypt ‘clear text’, key: aes256_key

Raises:

  • (ArgumentError)


55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'app/models/unidom/common/concerns/aes256_cryptor.rb', line 55

def encrypt(message, key: nil)

  raise ArgumentError.new('The message argument is required.') if message.blank?
  raise ArgumentError.new('The key argument is required.')     if key.blank?

  cipher = OpenSSL::Cipher::AES.new(256, 'CBC')
  cipher.encrypt
  cipher.padding = aes_256_padding
  cipher.key     = key

  cipher.update(message)+cipher.final

end

#encryption_algorithmObject



46
47
48
# File 'app/models/unidom/common/concerns/aes256_cryptor.rb', line 46

def encryption_algorithm
  'AES-256-CBC'
end

#hex_decrypt(encoded, key: nil) ⇒ Object

将明文 message 用秘钥 key 进行解密,并转换成16进制表达。如:self.hex_decrypt ‘clear text’, key: aes256_key



102
103
104
# File 'app/models/unidom/common/concerns/aes256_cryptor.rb', line 102

def hex_decrypt(encoded, key: nil)
  Unidom::Common::Numeration.hex decrypt(Unidom::Common::Numeration.rev_hex(encoded), key: key)
end

#hex_encrypt(message, key: nil) ⇒ Object

将明文 message 用秘钥 key 进行加密,并转换成16进制表达。如:self.hex_encrypt ‘clear text’, key: aes256_key



95
96
97
# File 'app/models/unidom/common/concerns/aes256_cryptor.rb', line 95

def hex_encrypt(message, key: nil)
  Unidom::Common::Numeration.hex encrypt(message, key: key)
end