PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WEBDEV (versões anteriores) → HmacSHA256 + Encodage Base64 URLSafeString
HmacSHA256 + Encodage Base64 URLSafeString
Iniciado por stephane, abr., 15 2021 8:11 PM - 3 respostas
Publicado em abril, 15 2021 - 8:11 PM
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
Membro registado
81 mensagems
Popularité : +7 (7 votes)
Publicado em abril, 15 2021 - 9:45 PM
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 :)
Publicado em abril, 15 2021 - 10:41 PM
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
Membro registado
81 mensagems
Popularité : +7 (7 votes)
Publicado em abril, 16 2021 - 5:24 PM
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é.