NAME¶
DBIx::Class::EncodedColumn::Digest - Digest backend
SYNOPSYS¶
#SHA-1 / hex encoding / generate check method
__PACKAGE__->add_columns(
'password' => {
data_type => 'CHAR',
size => 40 + 10,
encode_column => 1,
encode_class => 'Digest',
encode_args => {algorithm => 'SHA-1', format => 'hex', salt_length => 10},
encode_check_method => 'check_password',
}
#SHA-256 / base64 encoding / generate check method
__PACKAGE__->add_columns(
'password' => {
data_type => 'CHAR',
size => 40,
encode_column => 1,
encode_class => 'Digest',
encode_check_method => 'check_password',
#no encode_args necessary because these are the defaults ...
}
DESCRIPTION¶
ACCEPTED ARGUMENTS¶
The encoding to use for the digest. Valid values are 'binary', 'hex', and
'base64'. Will default to 'base64' if not specified.
algorithm¶
The digest algorithm to use for the digest. You may specify any valid Digest
algorithm. Examples are MD5, SHA-1, Whirlpool etc. Will default to 'SHA-256'
if not specified.
See Digest for supported digest algorithms.
salt_length¶
If you would like to use randomly generated salts to encode values make sure
this option is set to > 0. Salts will be automatically generated at encode
time and will be appended to the end of the digest. Please make sure that you
remember to make sure that to expand the size of your db column to have enough
space to store both the digest AND the salt. Please see list below for common
digest lengths.
METHODS¶
make_encode_sub $column_name, \%encode_args¶
Returns a coderef that takes two arguments, a plaintext value and an optional
salt and returns the encoded value with the salt appended to the end of the
digest. If a salt is not provided and the salt_length option was greater than
zero it will be randomly generated.
make_check_sub $column_name, \%encode_args¶
Returns a coderef that takes the row object and a plaintext value and will
return a boolean if the plaintext matches the encoded value. This is typically
used for password authentication.
COMMON DIGEST LENGTHS¶
CIPHER | Binary | Base64 | Hex
---------------------------------------
| MD2 | 16 | 22 | 32 |
| MD4 | 16 | 22 | 32 |
| MD5 | 16 | 22 | 32 |
| SHA-1 | 20 | 27 | 40 |
| SHA-256 | 32 | 43 | 64 |
| SHA-384 | 48 | 64 | 96 |
| SHA-512 | 64 | 86 | 128 |
| CRC-CCITT | 3 | 2 | 3 |
| CRC-16 | 5 | 6 | 4 |
| CRC-32 | 10 | 14 | 8 |
| Adler-32 | 4 | 6 | 8 |
| Whirlpool | 64 | 86 | 128 |
| Haval-256 | 32 | 44 | 64 |
---------------------------------------
SEE ALSO¶
DBIx::Class::EncodedColumn::Crypt::Eksblowfish::Bcrypt,
DBIx::Class::EncodedColumn, Digest
AUTHOR¶
Guillermo Roditi (groditi) <groditi@cpan.org>
Based on the Vienna WoC ToDo manager code by Matt S trout (mst)
CONTRIBUTORS¶
See DBIx::Class::EncodedColumn
LICENSE¶
This module is free software; you can redistribute it and/or modify it under the
same terms as Perl itself.