Image::ExifTool::AES
Section: User Contributed Perl Documentation (3)
Updated: 2021-01-27
Page Index
NAME
Image::ExifTool::AES - AES encryption with cipher-block chaining
SYNOPSIS
use Image::ExifTool::AES qw(Crypt);
$err = Crypt(\$plaintext, $key, 1); # encryption
$err = Crypt(\$ciphertext, $key); # decryption
DESCRIPTION
This module contains an implementation of the
AES encryption/decryption
algorithms with cipher-block chaining (
CBC) and
RFC 2898 PKCS #5 padding.
This is the
AESV2 and
AESV3 encryption mode used in
PDF documents.
EXPORTS
Exports nothing by default, but ``Crypt'' may be exported.
METHODS
Crypt
Implement
AES encryption/decryption with cipher-block chaining.
- Inputs:
-
0) Scalar reference for data to encrypt/decrypt.
1) Encryption key string (must have length 16, 24 or 32).
2) [optional] Encrypt flag (false to decrypt).
3) [optional] Flag to avoid removing padding after decrypting, or to avoid
adding 16 bytes of padding before encrypting when data length is already a
multiple of 16 bytes.
- Returns:
-
On success, the return value is undefined and the data is encrypted or
decrypted as specified. Otherwise returns an error string and the data is
left in an indeterminate state.
- Notes:
-
The length of the encryption key dictates the AES mode, with lengths of 16,
24 and 32 bytes resulting in AES-128, AES-192 and AES-256.
When encrypting, the input data may be any length and will be padded to an
even 16-byte block size using the specified padding technique. If the
encrypt flag has length 16, it is used as the initialization vector for
the cipher-block chaining, otherwise a random IV is generated. Upon
successful return the data will be encrypted, with the first 16 bytes of
the data being the CBC IV.
When decrypting, the input data begins with the 16-byte CBC initialization
vector.
BUGS
This code is blindingly slow. But in truth, slowing down processing is the
main purpose of encryption, so this really can't be considered a bug.
AUTHOR
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
REFERENCES
- <http://www.hoozi.com/Articles/AESEncryption.htm>
-
- <http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf>
-
- <http://www.faqs.org/rfcs/rfc3602.html>
-
SEE ALSO
Image::ExifTool(3pm)