OpenSSL, AES w Delphi 7

0

Witam
Czy ktoś z was próbował używać AES'a np. z biblioteki libeay32 wchodzącej w skład OpenSSL pod D7?
Nie interesują mnie implementacje stricte w Delphi - taką sobie właśnie zrobiłem i niestety jest zbyt wolna.
Posiadam procesor i7 z dodatkowymi instrukcjami wspomagającymi AES'a. Na stronie intela jest informacja o dodaniu tego w libeay32, z której chciałbym skorzystać, ale nie potrafię :P. Zawsze dostaje coś innego niż moja wzorcowa implementacja. Jest co prawda unit do delphi http://www.disi.unige.it/person/FerranteM/delphiopenssl/, ale funkcje dot. aes'a są wybrakowane, C++ znam "po łebkach" i nie bardzo się orientuje jak to kurcze działa.

Jeśli nie OpenSSL to może to intelowskie cudo? tylko problem jest taki, że generowane są pliki *.lib a nie dll, czytałem jak coś takiego importować z *.obj do Delphi, ale dostaje info, że jest to nieprawidłowy plik, w ogóle trudna sprawa z takimi importami.
Jeśli macie jakieś informacje na ten temat to piszcie. Może znacie inną bibliotekę do delphi wspierającą sprzętową akcelerację?

0

Okazało się, że wszystko robiłem jak należy tzn. problem leżał gdzieś indziej - w mojej "wzorcowej" aplikacji okazało się, że zarówno klucz, tekst jawny jak i wynik mają zamieniony byte rorder czyli np. zamiast takiego kawałka kodu:

  Key: array [0..15] of byte = ($00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F);
  pre_text:array [0..15] of byte = ($00,$11,$22,$33,$44,$55,$66,$77,$88,$99,$AA,$BB,$CC,$DD,$EE,$FF);

musiałem je podać w kolejności:

  Key: array [0..15] of byte = ($03,$02,$01,$00,$07,$06,$05,$04,$0B,$0A,$09,$08,$0F,$0E,$0D,$0C);
  pre_text:array [0..15] of byte = ($33,$22,$11,$00,$77,$66,$55,$44,$BB,$AA,$99,$88,$FF,$EE,$DD,$CC);

Dla formalności podam jak w Delphi zakodować coś AES'em z podlinkowanym libeay32.pas
Klucz można wygenerować raz jeśli jest taki sam dla reszty bloków w ECB, dla trybu CBC można też ustawić ivex, ostatni parametr 1- szyfrowanie, 0 - deszyfrowanie.
Tryb ECB nie jest zadeklarowany w pliku libeay32.pas, ale można sobie go zaimportować niemal identycznie jak CBC - tu reszta nagłówków z funkcjami dot. AES'a; http://dev.telnic.org/trac/browser/tools/open-ssl/trunk/Include/openssl/aes.h .

  //set key
  AES_set_encrypt_key(@KeyVar, 128, AES_KEY);

  //encode CBC
  AES_cbc_encrypt(@Text, @Cipher, 16, AES_KEY, @ivex, 1);
  //encode ECB
  AES_ecb_encrypt(@Text, @Cipher, AES_KEY, 1);

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