Преобразовать строку с акцентом в числа (шифрование RSA) - PullRequest
0 голосов
/ 25 мая 2019

Мой учитель математики попросил нас запрограммировать процесс шифрования / дешифрования RSA на python.Итак, я создал следующую функцию: lettre_chiffre (T), которая преобразует каждый символ в строке в число с помощью функции ord () chiffre_lettre (T), которая делает противоположное с chr (). И так как эти функции создают 4 блока чисел, янеобходимо зашифровать в RSA с 5-значным блоком для предотвращения частотного анализа.Проблема в том, что функция ord плохо работает с французскими акцентами "é" "à" ... Поэтому мне было интересно использовать метод bytearray, но я понятия не имею, как его использовать.

Как сделать так, чтобы эта программа работала с акцентами.Шифрование и дешифрование в байтах с помощью bytearray не работает, например, с «é» и «à».

python 

def lettre_chiffre(T):
    Message_chiffre = str('')
    for lettre in T:
        if ord(lettre) < 10000:
            nombre = str(ord(lettre))
            while len(nombre) != 4:
                nombre = str('0') + nombre
            Message_chiffre += nombre
        else:
            print("erreur lettre : ",lettre)
    while len(Message_chiffre)%4 != 0:
        Message_chiffre = str('0') + Message_chiffre
    return str(Message_chiffre)

def chiffre_lettre(T):
    Message_lettre = str('')
    A =T
    for i in range(int(len(str(A))/4)):
        nombre = str(A)[4*i:4*i+4]
        if int(nombre) < 10000:
            Message_lettre += str(chr(int(nombre)))
    return Message_lettre

1 Ответ

0 голосов
/ 25 мая 2019

см. Этот пост: https://stackoverflow.com/a/2788599

Что вам нужно, это

>>> '\xc3\xa9'.decode('utf8')
u'\xe9'
>>> u = '\xc3\xa9'.decode('utf8')
>>> u
u'\xe9'
>>> ucd.name(u)
'LATIN SMALL LETTER E WITH ACUTE'
...