Уведомления

Группа в Telegram: @pythonsu

#1 Июль 1, 2016 20:34:40

don_pedro
Зарегистрирован: 2016-07-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с PyCrypto

def crypt(text,key):
    CodeList=[ord(char) for char in text]
    KeyList=[ord(char) for char in key]
    NewKeyList=KeyList[:]
    while len(NewKeyList)<len(CodeList): NewKeyList+=KeyList
    while len(NewKeyList)>len(CodeList): del NewKeyList[-1] 
    EncryptedCodeList=[]; char=0
    for char in range(0,len(CodeList)): EncryptedCodeList.append(CodeList[char]^NewKeyList[char])
    EncryptedList=[chr(char) for char in EncryptedCodeList ]
    EncryptedText="".join(EncryptedList)
    return EncryptedText

Отредактировано don_pedro (Июль 1, 2016 20:40:03)

Офлайн

#2 Июль 2, 2016 02:34:24

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

Помогите разобраться с PyCrypto

scidam
Дополнять лучше не нулевыми байтами, а случайными, тогда результат шифрования для одного и того же сообщения будет различный (а это может существенно усложнить расшифровку).

scidam
Вот мой полностью работающий вариант:

>>> padding(b'a' * 15)
'aaaaaaaaaaaaaaa_'
>>> padding(b'b' * 15)
'bbbbbbbbbbbbbbb_'
>>> padding(b'abc' * 5)
'abcabcabcabcabc_'
>>> padding(b'a' * 15)
Как видишь, в конце предсказуемый байт при любой строке, тогда как с дополнительным блоком можно делать рандомную последовательность в конце.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version