Aes şifreleme sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
seci20

Aes şifreleme sorunu

Mesaj gönderen seci20 »

Merhaba ustalarım. Hesaplama sonuc veriyor ama yanlış sonuç veriyor. Bir türlü doğru hesaplama yaptıramadım sorun nerede olabilir ?


Python kodu.

Kod: Tümünü seç

 obj = Cipher(algorithms.AES(xored_key), modes.ECB(),
                backend=default_backend()).encryptor()
   return obj.update(plaintext) + obj.finalize()

Key ve data şu şekilde. (Hex olarak)

Key : '000102030405060708090a0b0c0d0e0f'

Data : '783490fd6a6c90f07236a8ed402794f8732c96fb711fa0f46c349ac4792493e8'

Python hesaplaması ve online hesapladığımda sonuç doğru çıkıyor.

Site : http://extranet.cryptomathic.com/aescal ... 927243ED7B

Python sonucu : 'e6861877db7b021e8b755f927243ed7b'


Benim delphide kullandığım kaynak ise şu şekilde.

http://www.delphican.com/attachment.php?aid=225

Kod: Tümünü seç

 function HexToStr(HexStr : String; const Text : boolean = True) : String;
var
 Hex : byte;
 sTemp : string;
 i : integer;
begin
 Result := '';
 if Length(HexStr) mod 2 <> 0 then
   Exit;

 for i := 2 to Length(HexStr) do
   if i mod 2 = 0 then begin
     sTemp := '$' + Copy(HexStr, i - 1, 2);
     Hex := Byte(StrToInt(sTemp));

     if Hex = $00 then begin
       if Text then
         Result := Result + ''
       else
         Result := Result + #$00;
       Continue;
     end;
     Result := Result + chr(Hex);
   end;
end;



procedure TForm1.Button3Click(Sender: TObject);
var
SifrelenmisVeri:string;

begin
SifrelenmisVeri := EncryptStringHex(hextostr('000102030405060708090a0b0c0d0e0f'),Hextostr('783490fd6a6c90f07236a8ed402794f8732c96fb711fa0f46c349ac4792493e8'));

memo1.Lines.Add(SifrelenmisVeri);

end;



Bu kodun sonucu ise.

'0F000000400E19FF18CAB920206762265B1C11E52019'



bu çıkıyor. ne yaptıysam bir türlü doğru hesaplama yaptıramadım. Yardımlarınız için şimdiden teşekkür ederim.
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Aes şifreleme sorunu

Mesaj gönderen mkysoft »

Verdiğiniz bağlantıya erişemedim ama dikkat etmeniz gerekenler:
1. Python kodu ECB modunu kullanıyor, ECB gibi bir çok standart var, Delphi tarafında da doğru modu kullandığınızdan emin olun.
2. String dönüşümlerinde encoding farklı olabilir, muhtemelen byte data üzerinden işlem yapılıyordur, string parametre alan fonksiyonlar kendi içinde tekrar byte çevrimi yapıyor genelde.
seci20

Re: Aes şifreleme sorunu

Mesaj gönderen seci20 »

mkysoft yazdı: 16 Haz 2018 08:08 Verdiğiniz bağlantıya erişemedim ama dikkat etmeniz gerekenler:
1. Python kodu ECB modunu kullanıyor, ECB gibi bir çok standart var, Delphi tarafında da doğru modu kullandığınızdan emin olun.
2. String dönüşümlerinde encoding farklı olabilir, muhtemelen byte data üzerinden işlem yapılıyordur, string parametre alan fonksiyonlar kendi içinde tekrar byte çevrimi yapıyor genelde.
hocam cevap verdiğiniz için teşekkür ederim.

kullandığım unit şu linkte upload ettim.

Kod: Tümünü seç

http://pasted.co/11942dea
bir çok mod denedim ama malasef başarılı olamadım. turboxbox tutun dll kadar denedim malasef başarılı olamadım.
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Aes şifreleme sorunu

Mesaj gönderen mkysoft »

Vermiş olduğunuz verilerde bir tutarsızlık var, şifreleme sonucunda çıktığını söylediğiniz değer data değerinden küçük. RSA için mode dışında padding olayı var birde, şifrelemenin kırılmasını zorlaştırmak için küçük verilerin dummy verilerle doldurulması olara özetlenebilir. Padding için de bir çok yöntem mevcut.
seci20

Re: Aes şifreleme sorunu

Mesaj gönderen seci20 »

mkysoft yazdı: 17 Haz 2018 11:14 Vermiş olduğunuz verilerde bir tutarsızlık var, şifreleme sonucunda çıktığını söylediğiniz değer data değerinden küçük. RSA için mode dışında padding olayı var birde, şifrelemenin kırılmasını zorlaştırmak için küçük verilerin dummy verilerle doldurulması olara özetlenebilir. Padding için de bir çok yöntem mevcut.
yok hocam ne denediysem başarılı olamadım. Şu şekilde deneme yaptım birde. Nerede hata yapıyorum bir türlü bulamadım.

function EncryptText_AES_128(input: string; password: string): ansistring;
var
Codec: TCodec;
CipherText: String;
begin
Codec := TCodec.Create(nil);
try
Codec.CryptoLibrary := TCryptographicLibrary.Create(Codec);
//
Codec.StreamCipherId := BlockCipher_ProgID;
Codec.BlockCipherId := Format(AES_ProgId, [128]);
Codec.ChainModeId := ecb_ProgId;
//
Codec.Password := Password;
Codec.EncryptString(input, CipherText,tencoding.UTF8);
//
Result := (CipherText);
finally
Codec.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Lines.Add( EncryptText_AES_128(#$00#$01#$02#$03#$04#$05#$06#$07#$08#$09#$0a#$0b#$0c#$0d#$0e#$0f,key_xoring('dqoev)ohnsWu\bk`oiicmZ_lpqe\ealp',#$98#$FF#$45#$1C)));
end;

key_xoring foksiyonu doğru çevirme yapıyor ama malasef sonuç doğru çıkmıyor. Turbopower lock kullandım gene doğru sonuç çıkmıyor.
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Aes şifreleme sorunu

Mesaj gönderen mkysoft »

Başka bir dilde denedim, aynı sonucu elde ettim. Delphi 10.2 şuan çalışmıyor bende, gönderdiğiniz kütüphaneyi deneyemedim, Delphi 7 için de çalışan bir şey henüz bulamadım. Tavsiyem farklı kütüphaneler denemeniz. Örneğin: http://www.wolfgang-ehrhardt.de/crypt_en.html
Parametreler şu şekilde olmalı:
Key: 783490fd6a6c90f07236a8ed402794f8732c96fb711fa0f46c349ac4792493e8
Data: 000102030405060708090a0b0c0d0e0f
Padding: NONE
Encryption Mode: ECB
Cevapla