Я пытаюсь создать AIS-код для криптографии, и у меня возникают ошибки, с которыми мне нужна помощь.AttributeError: Экземпляр шифрования не имеет атрибута '__getitem__'
File "C:\Users\work\Desktop\try.py", line 156, in byte_construct
if (pos & array_8[i]):
AttributeError: Encryption instance has no attribute '__getitem__'
Я продолжаю получать ошибку выше. Может кто-нибудь дать мне решение. Ниже мой источник
def rotate_byte_left(byte):
value = 0x00
value = byte & 0x80
byte = byte << 1
byte = byte & 0xFF
if value == 0x80:
byte = byte | 0x01
return byte
def rotate_byte_right(byte):
value = 0x00
value = byte & 0x01
byte = byte >> 1
byte = byte & 0xFF
if value == 0x01:
byte = byte | 0x80
return byte
def byte_construct(array_8,bit_pos):
byte = 0x00
for p in bit_pos:
pos = (0x01 << p)
for i in range(0,8): Specifically the error is poiting here.
if (pos & array_8[i]):
byte = byte & (0x01 << bit_pos)
return byte
def addRoundKey(self, state, roundKey):
"""Adds (XORs) the round key to the state."""
for i in range(0, len(state)):
state[i] ^= roundKey[i]
return state
def ecb(self, plaintext, key):
start = time.time()
pre_round1 = self.convert_hex_to_list(plaintext^key)
substitution_result = self.subBytes(pre_round1, False)
permutaion_result = self.byte_construct(substitution_result)
if __name__ == "__main__":
encrypt = Encryption()
encrypt.ecb(0x0000000000000000, 0x00FF00FF00FF00FF)
print encrypt.convert_list_to_hex([255,0,255])
Это, вероятно, означает, что ваш 'array_8' не является индексируемым, т. Е. Вы не можете писать' array_8 [i] ' – 0sh
. Кроме того, вызов модуля' try' - плохая идея, потому что поскольку это ключевое слово Python, вы не можете импортировать его, используя что-то вроде 'import try'. – DSM
У вас недостаточно данных для ответа, пожалуйста, pdate метод self.sunBytes и проверьте (или просто добавьте печать), что он возвращает, ответ есть – Rustem