NAME
DTOne::Crypt - Cryptographic Toolkit
SYNOPSIS
use DTOne::Crypt qw(encrypt_aes256gcm decrypt_aes256gcm);
my $encrypted = encrypt_aes256gcm($plaintext, $master_key);
my $decrypted = decrypt_aes256gcm($encrypted, $master_key);
DESCRIPTION
DTOne::Crypt provides a cryptographic toolkit intended to abstract
complexities in data interchange.
FUNCTIONS
DTone::Crypt implements the following functions, which can be imported
individually:
encrypt_aes256gcm
my $encrypted = encrypt_aes256gcm($plaintext, $master_key);
Encrypt plaintext value using AES-256 GCM to a base64 encoded string
containing the initialization vector (IV), ciphertext, and tag.
decrypt_aes256gcm
my $decrypted = decrypt_aes256gcm($encrypted, $master_key);
Decrypt a composite base64 encoded string containing the IV,
ciphertext, and tag back to its original plaintext value.
CAVEATS
Key Length
Master key is expected to be exactly 256 bits in length, encoded in
base64.
Performance
Random byte generation on Linux might run slow over time unless
haveged(8) is running. In this scenario, the streaming facility of
AES-GCM will be more memory efficient.
AUTHOR
Arnold Tan Casis <
[email protected]>
ACKNOWLEDGMENTS
Pierre Gaulon <
https://github.com/pgaulon> and Jose Nidhin
<
https://github.com/josnidhin> for their valued inputs in interpreting
numerous security recommendations and in designing the data interchange
protocol used in this module.
Sherwin Daganato <
https://metacpan.org/author/SHERWIN> for the note on
random byte generation and caveats to performance on Linux systems.
Pierre Vigier <
https://metacpan.org/author/PVIGIER> for the note on
cross-language compatibility with libraries in Go and Java.
COPYRIGHT
Copyright 2020- Arnold Tan Casis
LICENSE
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
SEE ALSO
See CryptX for an excellent generic cryptographic toolkit.