PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV (précédentes versions) → HmacSHA256 + Encodage Base64 URLSafeString
HmacSHA256 + Encodage Base64 URLSafeString
Débuté par stephane, 15 avr. 2021 20:11 - 3 réponses
Posté le 15 avril 2021 - 20:11
Bonjour à tous,

Je cherche à transcrire ce code Java en WLangage sur WEBDEV 25 :

Mac sha256HMAC = Mac.getInstance("HmacSHA256");
sha256HMAC.init(new SecretKeySpec("663768ff68ad8ea6768bbf65163e9b0a".getBytes("UTF-8"), "HmacSHA256"));
Base64.encodeBase64URLSafeString(sha256HMAC.doFinal("10000065&100016&panier-33455&42556&500".getBytes("UTF-8")));

le résultat doit être : mfy6VhbdyiErpfvQ3AvnKwU39W_ae9MfuaVurEg-KjE

Quelqu'un aurait-il une idée car je sèche !

Merci bien à vous
Membre enregistré
78 messages
Posté le 15 avril 2021 - 21:45
Bonjour,

Voilà :

sKey is string = "663768ff68ad8ea6768bbf65163e9b0a" // Clé à utiliser.
sURL is string = "10000065&100016&panier-33455&42556&500" // URL à hasher.
Trace(Encode(HashString(HA_HMAC_SHA_256, sURL, sKey), encodeBASE64))


Résultat du trace : mfy6VhbdyiErpfvQ3AvnKwU39W/ae9MfuaVurEg+KjE=

C'est le même résultat sauf le "/" est remplacé par "_" et le "+" est remplacé par "-".

Est-ce que c'est un simple appel à la fonction "Replace" pour éviter certains caractères spécieux dans l'URL ou encore autre chose ?

Je te laisse creuser pour le découvrir :)
Posté le 15 avril 2021 - 22:41
Un grand merci à DREAM-TECH !

J'ai trouvé pour le problème des caractères remplacés... Je fais un encodeBASE64URL au lieu d'un encodeBASE64.

Reste plus qu'a voir pour le "=" à la fin

Encore merci
Membre enregistré
78 messages
Posté le 16 avril 2021 - 17:24
hmm,

Je pense le signe "=" fait vraiment partie du résultat de l'encodage et supprimé par la suite.

Ce caractère est souvent supprimé car réservé à l'affectation des valeurs (paramètres/variables) de l'URL.

Un peu comme l'histoire de certains caractères remplacés mais je pense le "=" est simplement supprimé.