Comme l'a dit laalto, Blowfish_PP (parce qu'il est Blowfish, non pas parce qu'il est _PP) travaille sur des blocs.
Le traitement de ce problème est généralement complexe, c'est pourquoi vous avez un module qui encapsule (virtuellement) n'importe quel module Crypt :: * qui fournit un chiffrement par bloc, et vous permet de l'utiliser de manière beaucoup plus simple.
Par exemple, votre code avec Crypt :: CBC serait:
#!/usr/bin/perl -w
use strict;
use Crypt::CBC;
my $key = "12345678";
my $plaintextBlock = "mystringhere";
my $cipher = Crypt::CBC->new(
-key => $key,
-cipher => 'Blowfish_PP'
);
my $ciphertext = $cipher->encrypt($plaintextBlock);
# my $textual = $ciphertext;
# $textual =~ s/([^a-zA-Z0-9])/sprintf "\\x%02x", ord $1/ge;
# print "ciphertext: [$textual]\n";
print "ciphertext: [$ciphertext]\n";
my $plaintext = $cipher->decrypt($ciphertext);
print "plaintext: [$plaintext]\n";
Rappelez-vous que cryptogramme est flux d'octets, il est donc pas vraiment imprimable. Vous voudrez peut-être décompacter 3 lignes dans le code (en commençant par $ textual = $ ciphertext) pour afficher le texte chiffré de manière plus lisible.
L'avantage supplémentaire de l'utilisation de Crypt :: CBC est que si vous voulez passer à un autre algorithme, c'est juste un changement dans l'appel Crypt :: CBC-> new(). Par ailleurs - pourquoi crypter :: Blowfish_PP? Je veux dire, pourquoi ne pas Crypt :: Blowfish? La version _PP est généralement plus lente.
Note complémentaire, directement à partir Crypt::Blowfish, que l'on peut supposer être fonctionnellement équivalent à Crypt :: Blowfish_PP:
Le module est capable d'être utilisé avec Crypt :: CBC. Vous êtes encouragé à lire le perldoc pour Crypt :: CBC si vous l'intention d'utiliser ce module pour Cipher modes de chaînage de blocs.En fait, si avez l'intention de crypter plus de que huit octets de données avec ceci, ou n'importe quel autre chiffrement de bloc, vous allez pour avoir besoin d'un type d'aide de chaînage de bloc . Crypt :: CBC a tendance à être très bon dans ce domaine. Si vous ne cryptez pas plus de huit octets, vos données doivent avoir exactement huit octets de long. Si nécessaire, faites votre propre rembourrage. "\ 0" comme un octet nul est parfaitement valide pour utiliser pour cela.