class OpenSSL::Cipher
Overview
A class which can be used to encrypt and decrypt data using a specified cipher.
NOTE The ciphers available to an application are determined by the linked version of the system SSL library. A comprehensive list of ciphers can be found in the OpenSSL Cipher documentation.
require "random/secure"
key = Random::Secure.random_bytes(64) # You can also use OpenSSL::Cipher#random_key to do this same thing
iv = Random::Secure.random_bytes(32) # You can also use OpenSSL::Cipher#random_iv to do this same thing
def encrypt(data)
cipher = OpenSSL::Cipher.new("aes-256-cbc")
cipher.encrypt
cipher.key = key
cipher.iv = iv
io = IO::Memory.new
io.write(cipher.update(data))
io.write(cipher.final)
io.rewind
io.to_slice
end
def decrypt(data)
cipher = OpenSSL::Cipher.new("aes-256-cbc")
cipher.decrypt
cipher.key = key
cipher.iv = iv
io = IO::Memory.new
io.write(cipher.update(data))
io.write(cipher.final)
io.rewind
io.gets_to_end
end
Defined in:
openssl/cipher.crConstructors
Instance Method Summary
- #authenticated? : Bool
- #block_size : Int32
-
#decrypt : Nil
Sets this cipher to decryption mode.
-
#encrypt : Nil
Sets this cipher to encryption mode.
-
#final : Bytes
Outputs the decrypted or encrypted buffer.
- #finalize
- #iv=(iv)
-
#iv_len : Int32
How many bytes the iv should be.
- #key=(key)
-
#key_len : Int32
How many bytes the key should be.
- #name : String
- #padding=(pad : Bool)
-
#random_iv
Sets the iv using
Random::Secure
. -
#random_key
Sets the key using
Random::Secure
. -
#reset
Resets the encrypt/decrypt mode.
-
#update(data)
Add the data to be encrypted or decrypted to this cipher's buffer.
Instance methods inherited from class Reference
==(other : self)==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==, dup dup, hash(hasher) hash, initialize initialize, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference) : Bool
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Constructor methods inherited from class Reference
new
new,
unsafe_construct(address : Pointer, *args, **opts) : self
unsafe_construct
Class methods inherited from class Reference
pre_initialize(address : Pointer)
pre_initialize
Instance methods inherited from class Object
! : Bool
!,
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash hash, in?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io, root : String)from_json(string_or_io) from_json, from_yaml(string_or_io : String | IO) from_yaml