Sto utilizzando HMAC esattamente come previsto per verificare l'integrità di un messaggio. Tuttavia, il messaggio è in realtà un array associativo (o un hash).
Dato che questo sarà fatto su varie piattaforme (dentro e fuori il nostro controllo), abbiamo bisogno di un modo standard per convertire l'array in una stringa.
Ho visto i tubi usati come separatori in molti posti. Questa vulnerabilità in AWS è il tipo di cosa che voglio evitare.
Dì, il mio messaggio è {a:1,b:2}
, la conversione in a1b2
va bene?
O dovrei andare per qualcosa come 1|2
(Poi l'ordine della chiave diventa importante).
Un'altra soluzione sarebbe stata la conversione JSON, ma JSON non garantisce l'ordine delle chiavi, quindi potrebbe dare risultati diversi in diverse librerie.
Varie idee di cui stiamo discutendo:
data = {:c=>3,:a=>1,:b=>2}
data.sort.join
"a1b2c3"
data.values.sort.join
"123"
data.sort.join('|')
"a|1|b|2|c|3"
Sono propenso alla prima o alla terza scelta, ma ci sono modi in cui posso giudicare il mio approccio?