Найти - Пользователи
Полная версия: Помогите разобраться с PyCrypto
Начало » Python для экспертов » Помогите разобраться с PyCrypto
1 2
don_pedro
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
py.user.next
scidam
Дополнять лучше не нулевыми байтами, а случайными, тогда результат шифрования для одного и того же сообщения будет различный (а это может существенно усложнить расшифровку).

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

>>> padding(b'a' * 15)
'aaaaaaaaaaaaaaa_'
>>> padding(b'b' * 15)
'bbbbbbbbbbbbbbb_'
>>> padding(b'abc' * 5)
'abcabcabcabcabc_'
>>> padding(b'a' * 15)
Как видишь, в конце предсказуемый байт при любой строке, тогда как с дополнительным блоком можно делать рандомную последовательность в конце.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB