为什么不使用RSA加密和解密

时间:2016-10-31 23:47:56

标签: encryption cryptography rsa

我编码了RSA解密和加密功能,如下所示:

def encrypt(m,e,n):
    return pow(int(m.encode('hex'), 16), int(e, 10), int(n, 10) )


def decrypt(c,d,n):
    p = pow(int(c, 10), int(d, 10), int(n, 10))
    return hex(p)[2:].decode('hex')

当我想使用以下这些功能时,一切正常

e = "65537"
n = "21856687"
d = "12096993"
m = "TH"

c =  encrypt(m,e,n)
print decrypt(str(c),d,n)
  

但是当我更改要加密的邮件时(在这种情况下 m )我   得到错误的答案,实际上他们看起来像垃圾价值。我的意思是说   通过更改消息正在尝试一个长度更长的消息   超过2,如下所示。

e = "65537"
n = "21856687"
d = "12096993"
m = "THIS IS A HIDDEN MESSAGE"

c =  encrypt(m,e,n)
print decrypt(str(c),d,n)

1 个答案:

答案 0 :(得分:1)

消息字节(解释为Big Endian编号)必须小于n才能进行往返。您需要提升pq或缩小您的信息。 (你的"垃圾"是一个等效的消息模数n,它应该往返很好)

虽然这是希望的功课,但我觉得有必要声明原始(无衬垫)RSA是一个坏主意,而DIY RSA是一个坏主意。前者易受各种数据攻击,后者可能存在时序漏洞导致私钥泄露。

相关问题