Ich versuche, eine Signatur mit Elixir zu generieren, die einen gleichen Wert wie PHP hat.Signatur in Elixir und PHP generieren mit hmac
Zum Beispiel der Code in PHP ist
$signature = base64_encode(hash_hmac("sha256", "abc", "def"));
und der Ausgang wird
Mzk3ZjQ2NzM0MWU0ZDc4YzQ3NDg2N2VmMzI2MWNkYjQ2YzBlMTAzNTFlOWE5ODk5NjNlNmNiMmRjZTQwZWU1ZA==
Wie soll ich die Unterschrift erzeugen, die denselben Wert in Elixir hat. Ich habe versucht, so etwas wie unten
iex(9)> :crypto.hmac(:sha256, "abc", "def") |> Base.encode64 │
"IOvA8JNERwE081BA9j6pix2OQUISlJ7lxQBCnRXqsIE="
iex(10)> :crypto.hash(:sha256, :crypto.hmac(:sha256, "abc", "def")) |> Base.encode64 │
"dxGiPN6KqBJrtS2wlC4tnJXwUsWf4u1LPDtDFK+VT5A="
oder schalte ich die Position von abc
und def
iex(11)> :crypto.hash(:sha256, :crypto.hmac(:sha256, "def", "abc")) |> Base.encode64 │
"b+3P5oHu8e6HIlJe2MzcGhKm7tCcF/NE5wPIbEhrFGU="
iex(12)> :crypto.hmac(:sha256, "def", "abc") |> Base.encode64 │
"OX9Gc0Hk14xHSGfvMmHNtGwOEDUempiZY+bLLc5A7l0="
Aber keiner von ihnen hat den gleichen Wert. Kann mir jemand sagen, wie man es richtig macht?
Vielen Dank! Es funktionierte!!! –
Nach dem Auschecken des Dokuments, fand ich heraus, ich kann es tun, wie '... |> Base.encode16 (Fall:: niedriger) |> Base.encode64' ohne' String.downcase' –