J'ai besoin dans un traitement RPG d'utiliser un cryptage de sécurité d'un texte au format SHA256.
J'ai réussi à faire fonctionner mon programme et d'obtenir le texte au format hexadécimal.
Cependant, j'ai un problème et des valeurs différentes en comparant avec 2 convertisseurs différents en ligne dès lors que j'utilise les caractères "{" et "}".
Auriez-vous une idée de ce qui peut provoquer cela ?
Ci-dessous les résultats de mes tests :
1) Chaine origine : TEST
1er conv : 94EE059335E587E501CC4BF90613E0814F00A7B08BC7C648FD865A2AF6A22CC2
2e conv : 94EE059335E587E501CC4BF90613E0814F00A7B08BC7C648FD865A2AF6A22CC2
AS400 : 94EE059335E587E501CC4BF90613E0814F00A7B08BC7C648FD865A2AF6A22CC2
==> Test concluant car les valeurs hexadécimales sont équivalentes pour les 3.
2) Chaine origine : TEST{
1er conv : 1E36998A4998384D076A7572349A4348D5FE1E8CE2A2B8E490FEDCE3960C2C61
2e conv : 1E36998A4998384D076A7572349A4348D5FE1E8CE2A2B8E490FEDCE3960C2C61
AS400 : 4106D9FB8895849E5F7919ED26DFE15BDA83B0B904E8A73DBFFCC4F766951EE7
==> Test non concluant car la valeur hexadécimale en sortie de mon programme AS400 est différente des 2 autres.
Pour info, j'utilise la procédure "Qc3CalculateHash" exposé par le programme de service QSYS/QC3HASH du répertoire de liage 'QC2LE'.
Voici le code utilisé :
Code : Tout sélectionner
data = 'TEST{';
len = %len(%trim(data));
alg.HashAlg = HASH_SHA256;
//Convert from EBCDIC to ASCII (skip this step if you want Hash in EBCDIC)
QDCXLATE(len: data: 'QTCPASC');
//API to calculate the SHA256 hash
Qc3CalculateHash( %addr(data)
: len
: 'DATA0100'
: alg
: 'ALGD0500'
: '0'
: *OMIT
: hash
: ErrorNull );
cvthc( $hex: hash: %len(hash)*2);
dsply %subst($hex:1:32);
dsply %subst($hex:33:32);
*inlr = *on;