Image::ExifTool::AES (3)
Leading comments
Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) Standard preamble: ========================================================================
NAME
Image::ExifTool::AES - AES encryption with cipher-block chainingSYNOPSIS
use Image::ExifTool::AES qw(Crypt); $err = Crypt(\$plaintext, $key, 1); # encryption $err = Crypt(\$ciphertext, $key); # decryption
DESCRIPTION
This module contains an implementation of theAES
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
ImplementAES
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 AESmode, with lengths of 16, 24 and 32 bytes resulting inAES-128, AES-192andAES-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
IVis generated. Upon successful return the data will be encrypted, with the first 16 bytes of the data being theCBC IV.When decrypting, the input data begins with the 16-byte
CBCinitialization 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-2017, Phil Harvey (phil at owl.phy.queensu.ca)This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
REFERENCES
- <www.hoozi.com/Articles/AESEncryption.htm>
- <www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf>
- <www.faqs.org/rfcs/rfc3602.html>