【发布时间】:2019-10-22 15:56:44
【问题描述】:
我正在尝试使用公式 c = m^p mod q 使用 rsa 进行加密。 问题是如果数字太大,python3在做模时将其转换为浮点数。
我试图通过转换为 int 来停止转换
c = int(int((pow(n,p)) % q))
问题是当 p 太大时它自动有小数并且 python 认为,我正在尝试整数浮动。这导致了这一点:
OverflowError: int too large to convert to float
有没有办法解决这个问题?
【问题讨论】:
-
不要明确计算
pow(n,p),因为无论如何你都会去mod q。 -
你是使用内置的
pow函数还是math.pow? -
如果您使用的是内置的
pow,那么我唯一的猜测是n、p和q之一不是整数,因此这些操作将其他参数浮动,导致错误。 -
使用 pow 的 3 参数形式
pow(n, p, q)进行模幂运算。这更有意义,如果由于某种原因你从math导入了pow,你会得到一个错误。 -
三个参数
pow如果任何参数不是整数,也会引发错误,这是我能想到的唯一导致此错误的其他原因。
标签: python-3.x rsa