J'ai remarqué que quand j'envoyer une URL comme ceci:envoyer hachage SHA256 comme param URL comme signature pour les données de demande Rails
http://localhost:3000/register/register_user/?sig=zaQ/876CwJMEEmrJqAOYHyEKBXy2s03NDmk+3FsXPr4=
ce qui vient à travers quand je l'utilise pour comparer au résultat attendu à l'aide params [: sig] dans le contrôleur est ceci:
zaQ/876CwJMEEmrJqAOYHyEKBXy2s03NDmk 3FsXPr4=
pour une raison quelconque le signe « + » qui était dans l'url au 9ème caractère de la fin de la chaîne a été convertie en un espace.
Vous ne savez pas pourquoi cela se produit, que cela se produise uniquement avec les signes + ou quoi.
Le résultat renvoyé par Digest :: SHA256.base64digest (data) a ce signe plus pour que ma validation de la signature échoue.
Quelle est la meilleure façon de résoudre ce problème? Sera-t-il suffisant, dans le cas général, de convertir les signes '+' en espaces avant la comparaison ou est-ce que c'est une façon moins laide d'aborder?
Cela ne semble pas faire quoi que ce soit. La sortie des puts au-dessus de zaQ/876CwJMEEmrJqAOYHyEKBXy2s03NDmk + 3FsXPr4 = – user1023110
Le signe plus est-il le seul caractère qui peut apparaître dans le hachage calculé? Ou y en a-t-il d'autres qui pourraient être traduits d'une manière ou d'une autre? – user1023110
Le signe égal vous obtiendra aussi – jbrahy