Kodowanie SHA256 i Base64 - proszę o sprawdzenie

0

Witam najprawdopodobniej mam problem gdzies z kodowaniem sha256 lub base64. Dokładnie chodzi o zalogowanie do allegro. Wymagane jes potraktowanie hasla sha256 potem zakodowanie base64. Napisałem odpowiednie procedury i tak

hasło: "test"

sha 256 "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"

potem base64: "OWY4NmQwODE4ODRjN2Q2NTlhMmZlYWEwYzU1YWQwMTVhM2JmNGYxYjJiMGI4MjJjZDE1ZDZjMTViMGYwMGEwOA=="

Czy mógłbym prosić aby ktoś sprawdził czy wyrazenie test tak powinno wygladać zakodowane?

korzystam z bibliotek DCPCrypt2

0

dobrze jest, z tym że zdajesz sobie sprawę, że BASE64('f') != BASE64('F')

0

Misiekd No właśnie chyba nie zdaję sobie sprawy, bo nie rozumiem to już chyba zmęczenie. W chwili obecnej do procedury base64(wprowadzam duże i małe litery z sha256). A allegro ciągle zwraca mi błędne hasło.

0

Coś mi się nie podoba to, że hash zapisany w hexach jest krótszy niż ten w Base 64. Najprawdopodobniej do kodowania wrzucasz stringa z wyjściem w systemie szesnastkowym i traktuje Ci przykładowo "2a" jako dwa znaki "2" i "a", a nie jak powinien jeden znak o wartości 42.

0

Oto funkcja która przerabia tablicę Digest: array[0..31] of Byte; otrzymana z szyfrowania komponentu sha256 na stringa.

function DigestToStr(Digest: array of byte): string;
var
i: Integer;
begin
Result := '';
for i := 0 to Length(Digest)-1 do
Result := Result + LowerCase(IntToHex(Digest[i], 2));
end;

0

Zjarek Miałeś rację dziękuję ci bardzo kodowałem dwa znaki a nie jeden ponizej podaje poprawioną funkcję i logowanie do allegro działa.

function DigestToStr(Digest: array of byte): string;
var
i: Integer;
begin
Result := '';
for i := 0 to Length(Digest)-1 do
Result := Result + chr(Digest[i]);
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1