daily pastebin goal
88%
SHARE
TWEET

Untitled

a guest Mar 23rd, 2019 67 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3.  
  4. import os
  5. import sys
  6. import rsa
  7. from Crypto.Cipher import AES
  8.  
  9.  
  10. def encryption(message_block, key, IV):
  11.     ############################### encryption message from transceiver ###################################
  12.     message_block_size= len(message_block)  #size Byte of message_block
  13.     message=""                                  #blok 16Byte
  14.     array_ciphertext = []
  15.     x = -1                                     # pomocna pro urceni velkostio bloku, protoze umi zasifrovat len 16Byte naraz
  16.  
  17.     for i in range(0, len(message_block)):   # cyklus od 0 po velkost spravy
  18.         message +=message_block[i]           # pripocitam aktualny ynak z spravy
  19.         x += 1
  20.         if x == 13:                          # urci nam velkost bloku na 14Byte lebo pridame +2Byte zahlavi
  21.             x=-1                              # vynuluje promenu
  22.             message+="02"                               #zahlavi
  23.             obj = AES.new(key, AES.MODE_CBC, IV)        #vytvori tzv. sifrer AES
  24.             ciphertext = obj.encrypt(message)           # zasifruje message
  25.             array_ciphertext.append(ciphertext)         # prida tento blok do pola
  26.             IV = ciphertext                             # IV sa stane predchadzajuca zasifrovana sprava princip CBC modu
  27.             message=""                                  # vynuluje message
  28.         if i == (len(message_block)-1):                 # ked je posledny znak
  29.             residue_value = ((i+1) % 14)                # pocet znaku v poslednem bloku, aby sme vedeli dat vypln
  30.             cycle = 16 - residue_value                  # pocet Bytu vyplne neskur pouzijeme jak pocet 0
  31.             value_cycle=cycle                           # pocet Bytu vyplne
  32.             if residue_value !=0:                                # podminka ze by posledny blok byl presne 14
  33.                 if cycle < 10:                                    # ked sa bude doplnat menej jak 10 bytu tak aby sme pridali max 8x0 a na max konec 9 jedno misto na vyjadreni kolko ich je
  34.                     cycle -=1                                      # pocet 0
  35.                 else:                                               # ked doplname 10 az 15 tak aby bylo max 13x 0 a max15 na konci dve mista na vyjadreni kolko ich je
  36.                     cycle -= 2                                      #pocet 0
  37.  
  38.                 for i in range(0,cycle):             # cyklus na pridani 0
  39.                     message+="0"                        # pridani 0
  40.                 message+=str(value_cycle)               # pridani kolko je vyplne
  41.                 obj = AES.new(key, AES.MODE_CBC, IV)
  42.                 ciphertext = obj.encrypt(message)
  43.                 array_ciphertext.append(ciphertext)
  44.                 IV = ciphertext
  45.  
  46.     return  array_ciphertext
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56. def decryption(array_ciphertext, key, IV):
  57.     array_plaintext=[]
  58.  
  59.     plaintext=[]
  60.  
  61.     for i in range(0, len(array_ciphertext)):
  62.         message=array_ciphertext[i]
  63.         obj = AES.new(key, AES.MODE_CBC, IV)
  64.         plaintext_with_payload=obj.decrypt(message)
  65.         IV = message
  66.         value=plaintext_with_payload[14]*10+plaintext_with_payload[15]
  67.         chars_of_message=16-value
  68.         for j in range(0,chars_of_message):
  69.             plaintext+=plaintext_with_payload[j]
  70.         array_plaintext.append(plaintext)
  71.  
  72.  
  73.     #value=array_plaintext[len(array_ciphertext)-1]
  74.     return array_plaintext
  75.  
  76. def main():
  77.  
  78.     ciphertext = encryption("12345678901234567890123456789", "This is a key123", 'This is an IV456')
  79.     print(ciphertext[0])
  80.     print(len(ciphertext[0]))
  81.  
  82.     message = decryption(ciphertext, "This is a key123", 'This is an IV456')
  83.     print(message[0])
  84.     #message_block=ciphertext
  85.     # message=""
  86.     # message_block = "ciphertextkkjnjbhvgvgvnjnjhb"
  87.     # for i in range(0, len(message_block)):
  88.     #     message +=message_block[i]
  89.     #
  90.     # print(message)
  91.  
  92.  
  93.  
  94.  
  95.  
  96. if __name__ == '__main__':
  97.     main()
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top