将带有重音符号的字符串转换为数字(RSA加密)

时间:2019-05-25 16:50:40

标签: python string rsa non-ascii-characters

我的数学老师要求我们用python编写RSA加密/解密过程。因此,我创建了以下函数: lettre_chiffre(T)使用ord()函数将字符串中的每个字符转换为数字 chiffre_lettre(T)与chr()相反 由于这些函数创建了4个数字块,因此我需要使用5个数字块在RSA中进行加密,以防止频率分析。 问题是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 :(得分:0)

请参阅此帖子: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'