0

Belirtilen şifrenin geçerli uygulanmasını iyileştirmeye çalışıyorumDüz metin şifreli olarak şifrelenemedi

Yanlış mı kullanıyorum? As aşağıda benim kodudur:

import hashlib 
import binascii 
def Encrypt_Pass(password, authenticator, secret): 
     m = hashlib.md5() 
     m.update(secret+authenticator) 
     return "".join(chr(ord(x)^ord(y)) for x, y in zip(password.ljust 
     (16,'\0')[:16], m.digest()[:16])) 
result = Encrypt_Pass("abcd1","344c71c77a2b845b8856ffa968740b73","sharedsecret") 
ciphertext = "6ed3a35440abe69b2e8698109b809932"#plaintext is cisco123 
print result.encode("hex") 

Sonucu aşağıda gösterilmiştir:

2509f347a7c5bde3977bb944ae0eb89a 

döndürülen şifreli ben yakalamak şifreli şifreyi maç ETMEZ görebileceğiniz gibi! Kodu yanlış kullanıyorum mı? Kullanılan düz metin parolasının ve paylaşılan anahtarın doğru olduğunu doğruladım.

Birinin bana doğru yönü gösterip gösteremeyeceğini takdir ediyorum.

+0

[MD5 şifreleme değil] (https://paragonie.com/blog/2015/08/you-wouldnt-base64-a-password-cryptography-decoded). –

cevap

3

Kimlik doğrulayıcınız onaltılık bir dizedir. Bir ikili dizgeye dönüştürülmelidir.

import hashlib 
from binascii import a2b_hex 

def Encrypt_Pass(password, authenticator, secret): 
    m = hashlib.md5() 
    m.update(secret + a2b_hex(authenticator)) 
    return "".join(chr(ord(x)^ord(y)) for x, y in zip(password.ljust 
     (16,'\0')[:16], m.digest()[:16])) 

result = Encrypt_Pass("cisco123","344c71c77a2b845b8856ffa968740b73","sharedsecret") 
ciphertext = "6ed3a35440abe69b2e8698109b809932"#plaintext is cisco123 
print result.encode("hex") 
+0

neden bir ikili dizgi olması gerektiğini sorabilir miyim? –

+0

Olması gerekmiyor ama elmaları elmalarla konuşmak zorundasınız. "344c71c77a2b845b8856ffa968740b73" dizesi gerçekten doğrulayıcı değil. Kimlik doğrulayıcınızın insan tarafından okunabilir onaltılık temsili. Kimlik doğrulayıcınızın "merhaba" kelimesi olduğunu ve daha sonra işe yaramayacak şekilde kimlik doğrulaması yapmak için ispanyolca kelime "hola" kelimesini kullandığını söylemek benzer olurdu. Doğrulayıcınız eşleşmeli. – clockwatcher

İlgili konular