Сергей Романов


Crypt::OpenPGP::Words - Create English-word encodings


    use Crypt::OpenPGP::Words;
    my $cert = Crypt::OpenPGP::Certificate->new;
    my @words = Crypt::OpenPGP::Words->encode( $cert->fingerprint );


Crypt::OpenPGP::Words provides routines to convert either octet or hexadecimal strings into a list of English words, using the same algorithm and biometric word lists as used in PGP (see AUTHOR & COPYRIGHTS for source of word lists).

In PGP this is often used for creating memorable fingerprints, the idea being that it is easier to associate a list of words with one's key than a string of hex digits. See the fingerprint_words method in Crypt::OpenPGP::Certificate for an interface to word fingerprints.


Crypt::OpenPGP::Words->encode( $octet_str )

Given an octet string $octet_str, encodes that string into a list of English words.

The encoding is performed by splitting the string into octets; the list of octets is then iterated over. There are two lists of words, 256 words each. Two-syllable words are used for encoding odd iterations through the loop; three-syllable words for even iterations. The word list is formed by treating each octet as an index into the appropriate word list (two- or three-syllable), then adding the word at that index to the list.

Returns the list of words.

Crypt::OpenPGP::Words->encode_hex( $hex_str )

Performs the exact same encoding as encode; $hex_str, a string of hexadecimal digits, is first transformed into a string of octets, then passed to encode.

Returns the list of words.


Based on PGPWords.pm by Mike Dillon. Biometric word lists as defined in manual for PGPFreeware for Windows 6.5.1, Appendix D

Please see the Crypt::OpenPGP manpage for author, copyright, and license information.