5 votes

Cryptage Coldfusion et déchiffrement Perl

J'ai une situation où j'ai besoin de crypter le contenu en Coldfusion puis de le décrypter en Perl. Voici un exemple de code Coldfusion :

  input = "Au milieu du rugissement de Rome libérée, Des nations libérées, et le monde en liesse";
  encryptionKey = "8kbD1Cf8TIMvm8SRxNNfaQ==";
  encryptedInput = encrypt( input, encryptionKey, "AES/ECB/PKCS5Padding", "hex" );
  writeOutput( "Contenu crypté : #encryptedInput# " );

Cela produit :

27B0F3EB1286FFB462BDD3F14F5A41724DF1ED888F1BEFA7174CA981C7898ED2EF841A15CDE4332D030818B9923A2DBA0C68C8352E128A0744DF5F9FA955D3C72469FEFDAE2120DE5D74319ED666DDD0 

Et en Perl :

use 5.24.1;
use Crypt::ECB qw(encrypt_hex);

my $input = "Au milieu du rugissement de Rome libérée, Des nations libérées, et le monde en liesse";
my $encryption_key = "8kbD1Cf8TIMvm8SRxNNfaQ==";
my $encrypted_input = encrypt_hex($encryption_key, 'Rijndael', $input);
say $encrypted_input;

Cela produit :

e220ff2efe5d41e92237622ba969f35158d20e2c9c44995d44136d928d517462980321d4d6193fe62dc942fd717128442972524207777366954e5ceb2d1812ac997e06767a27d6a0145176d717c3836b

Pourquoi le contenu crypté est-il différent ? Est-ce que quelqu'un a des idées à ce sujet ?

2voto

mob Points 61524

Votre clé de cryptage est encodée en base64, mais Crypt::ECB attend une chaîne d'octets brute (ce n'est pas clair dans la documentation, cependant).

use Convert::Base64;
...

my $encryption_key = decode_base64("8kbD1Cf8TIMvm8SRxNNfaQ==");
...

Nouvelle sortie :

27b0f3eb1286ffb462bdd3f14f5a41724df1ed888f1befa7174ca981c7898ed2ef841a15cde4332d030818b9923a2dba0c68c8352e128a0744df5f9fa955d3c72469fefdae2120de5d74319ed666ddd0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X