mirror of
				https://github.com/LonamiWebs/Telethon.git
				synced 2025-10-30 23:47:33 +03:00 
			
		
		
		
	Remove seemingly useless array copies on aes.py (#199)
This commit is contained in:
		
							parent
							
								
									9f812d83a9
								
							
						
					
					
						commit
						afcddfd7c1
					
				|  | @ -5,7 +5,9 @@ import pyaes | ||||||
| class AES: | class AES: | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def decrypt_ige(cipher_text, key, iv): |     def decrypt_ige(cipher_text, key, iv): | ||||||
|         """Decrypts the given text in 16-bytes blocks by using the given key and 32-bytes initialization vector""" |         """Decrypts the given text in 16-bytes blocks by using the | ||||||
|  |            given key and 32-bytes initialization vector | ||||||
|  |         """ | ||||||
|         iv1 = iv[:len(iv) // 2] |         iv1 = iv[:len(iv) // 2] | ||||||
|         iv2 = iv[len(iv) // 2:] |         iv2 = iv[len(iv) // 2:] | ||||||
| 
 | 
 | ||||||
|  | @ -17,8 +19,8 @@ class AES: | ||||||
|         cipher_text_block = [0] * 16 |         cipher_text_block = [0] * 16 | ||||||
|         for block_index in range(blocks_count): |         for block_index in range(blocks_count): | ||||||
|             for i in range(16): |             for i in range(16): | ||||||
|                 cipher_text_block[i] = cipher_text[block_index * 16 + i] ^ iv2[ |                 cipher_text_block[i] = \ | ||||||
|                     i] |                     cipher_text[block_index * 16 + i] ^ iv2[i] | ||||||
| 
 | 
 | ||||||
|             plain_text_block = aes.decrypt(cipher_text_block) |             plain_text_block = aes.decrypt(cipher_text_block) | ||||||
| 
 | 
 | ||||||
|  | @ -26,17 +28,19 @@ class AES: | ||||||
|                 plain_text_block[i] ^= iv1[i] |                 plain_text_block[i] ^= iv1[i] | ||||||
| 
 | 
 | ||||||
|             iv1 = cipher_text[block_index * 16:block_index * 16 + 16] |             iv1 = cipher_text[block_index * 16:block_index * 16 + 16] | ||||||
|             iv2 = plain_text_block[:] |             iv2 = plain_text_block | ||||||
| 
 | 
 | ||||||
|             plain_text.extend(plain_text_block[:]) |             plain_text.extend(plain_text_block) | ||||||
| 
 | 
 | ||||||
|         return bytes(plain_text) |         return bytes(plain_text) | ||||||
| 
 | 
 | ||||||
|     @staticmethod |     @staticmethod | ||||||
|     def encrypt_ige(plain_text, key, iv): |     def encrypt_ige(plain_text, key, iv): | ||||||
|         """Encrypts the given text in 16-bytes blocks by using the given key and 32-bytes initialization vector""" |         """Encrypts the given text in 16-bytes blocks by using the | ||||||
|  |            given key and 32-bytes initialization vector | ||||||
|  |         """ | ||||||
| 
 | 
 | ||||||
|         # Add random padding if and only if it's not evenly divisible by 16 already |         # Add random padding iff it's not evenly divisible by 16 already | ||||||
|         if len(plain_text) % 16 != 0: |         if len(plain_text) % 16 != 0: | ||||||
|             padding_count = 16 - len(plain_text) % 16 |             padding_count = 16 - len(plain_text) % 16 | ||||||
|             plain_text += os.urandom(padding_count) |             plain_text += os.urandom(padding_count) | ||||||
|  | @ -50,8 +54,9 @@ class AES: | ||||||
|         blocks_count = len(plain_text) // 16 |         blocks_count = len(plain_text) // 16 | ||||||
| 
 | 
 | ||||||
|         for block_index in range(blocks_count): |         for block_index in range(blocks_count): | ||||||
|             plain_text_block = list(plain_text[block_index * 16:block_index * |             plain_text_block = list( | ||||||
|                                                16 + 16]) |                 plain_text[block_index * 16:block_index * 16 + 16] | ||||||
|  |             ) | ||||||
|             for i in range(16): |             for i in range(16): | ||||||
|                 plain_text_block[i] ^= iv1[i] |                 plain_text_block[i] ^= iv1[i] | ||||||
| 
 | 
 | ||||||
|  | @ -60,9 +65,9 @@ class AES: | ||||||
|             for i in range(16): |             for i in range(16): | ||||||
|                 cipher_text_block[i] ^= iv2[i] |                 cipher_text_block[i] ^= iv2[i] | ||||||
| 
 | 
 | ||||||
|             iv1 = cipher_text_block[:] |             iv1 = cipher_text_block | ||||||
|             iv2 = plain_text[block_index * 16:block_index * 16 + 16] |             iv2 = plain_text[block_index * 16:block_index * 16 + 16] | ||||||
| 
 | 
 | ||||||
|             cipher_text.extend(cipher_text_block[:]) |             cipher_text.extend(cipher_text_block) | ||||||
| 
 | 
 | ||||||
|         return bytes(cipher_text) |         return bytes(cipher_text) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user