eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAlgorytm AES › Algorytm AES
  • Data: 2021-02-15 14:28:58
    Temat: Algorytm AES
    Od: Roman Tyczka <r...@h...you.spammer> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Witam,

    Nie znam Pythona, ale się trochę go zaczynam uczyć, bo potrzebuję nim
    sprawdzić poprawność szyfrowania/deszyfrowania różnymi algorytmami
    biblioteki w innym języku.
    Napisałem krótki program, który za pomocą dwóch implementacji algorytmu
    AES szyfruje i deszyfruje łańcuch tekstowy:

    import binascii
    import pyaes
    from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes

    key = b'01234567012345670123456701234567'
    iv = bytearray(16)

    plaintext = ('Some short description with looooooooong '
    'additional data like polish diacritical chars... łóżźćęół
    and digits 0123456789')
    encrypter = pyaes.Encrypter(pyaes.AESModeOfOperationCBC(key, iv.decode()))
    ciphertext = encrypter.feed(plaintext.encode('utf_8'))
    ciphertext += encrypter.feed()
    print("Encrypted AES256'1:", binascii.hexlify(ciphertext).upper())

    aes = pyaes.AESModeOfOperationCBC(key)
    decrypter = pyaes.Decrypter(aes)
    decrypt = decrypter.feed(ciphertext)
    decrypt += decrypter.feed()
    print('Decrypted:', decrypt.decode('utf_8'))
    print()

    iv = bytearray(16)
    cipher = Cipher(algorithms.AES(key), modes.CBC(iv))
    encryptor = cipher.encryptor()
    ct = encryptor.update(plaintext.encode('utf_8')) + encryptor.finalize()
    print("Encrypted AES256'2:", binascii.hexlify(ct).upper())

    decryptor = cipher.decryptor()
    dc = decryptor.update(ct) + decryptor.finalize()
    print('Decrypted:', dc.decode('utf_8'))

    Wyniki:

    Encrypted AES256'1:
    b'B623A479FC657E31F219287CD191075575B2FB56485D0C22E9
    168A2BF2289C7165CDA67586A486E14115C754ABA158A84A8C3B
    521E0DF87505D77649A8F1CB52A03D41E205849F28BCA2DE189A
    9C65CDB648DBC9F7D49AF2F1704B491E9E2DE6FC357ADC8E1573
    3394C3C75B45570AE77A2A6CB6CC4418A558A78313C0C16478A7
    D61538B88B486BCAE89235D8FCEEB8'

    Encrypted AES256'2:
    b'B623A479FC657E31F219287CD191075575B2FB56485D0C22E9
    168A2BF2289C7165CDA67586A486E14115C754ABA158A84A8C3B
    521E0DF87505D77649A8F1CB52A03D41E205849F28BCA2DE189A
    9C65CDB648DBC9F7D49AF2F1704B491E9E2DE6FC357ADC8E1573
    3394C3C75B45570AE77A2A6CB6CC4418A558A78313C0C16478'

    I teraz mam pytanie dlaczego szyfrogram pierwszej biblioteki jest o 16
    bajtów dłuższy niż drugiej? Nie jest to initialization vector, bo ten
    ustawiony jest na 16 zer. Z czego wynika i czym jest ta różnica?
    Różnica jest na końcu i wygląda tak:

    A7D61538B88B486BCAE89235D8FCEEB8

    --
    pzdr
    Roman

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: