HCE_SHA(3pm) User Contributed Perl Documentation HCE_SHA(3pm)NAME
Crypt::HCE_SHA - Perl extension implementing one way hash chaining encryption using SHA
SYNOPSIS
use Crypt::HCE_SHA;
$hce_sha = Crypt::HCE_SHA->new("SharedSecret", "Random01,39j309ad");
$crypted = $hce_sha->hce_block_encrypt("Encrypt this information");
$info = $hce_sha->hce_block_decrypt($crypted);
$mime_crypted = $hce_sha->hce_block_encode_mime("Encrypt and Base64 this information");
$info = $hce_sha->hce_block_decode_mime($mime_crypted);
DESCRIPTION
This module implements a chaining block cipher using a one way hash. This method of encryption is the same that is used by radius
(RFC2138) and is also described in Applied Cryptography.
Two interfaces are provided in the module. The first is straight block encryption/decryption the second does base64 mime encoding/decoding
of the encrypted/decrypted blocks.
The idea is the the two sides have a shared secret that supplies one of the keys and a randomly generated block of bytes provides the
second key. The random key is passed in cleartext between the two sides.
An example client and server are packaged as modules with this module. They are used in the tests. They can be found in the examples
directory.
Thanks to Jake Angerman for the bug report on the bug in key generation for the chaining portion of the algorithm
AUTHOR
Eric Estabrooks, eric@urbanrage.com
SEE ALSO perl(1).
perl v5.12.4 2011-08-09 HCE_SHA(3pm)
Check Out this Related Man Page
Image::ExifTool::AES(3pm) User Contributed Perl Documentation Image::ExifTool::AES(3pm)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-2011, 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
<http://www.hoozi.com/Articles/AESEncryption.htm>
http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf <http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf>
<http://www.faqs.org/rfcs/rfc3602.html>
SEE ALSO Image::ExifTool(3pm)perl v5.12.4 2011-03-04 Image::ExifTool::AES(3pm)