我正在遵循Wiki中的RSA算法:http://en.wikipedia.org/wiki/RSA_(algorithm)
我使用的是Python 3.3.0,我正在尝试进行RSA加密,遇到了两个我不知道该怎么办的问题。
在Encryptions类中,我的方法都需要缩进一级,以表明它们是类的方法,而不是全局函数。
当主脚本在最后请求输入时,如果我只是点击返回,则抛出一个异常,即Python达到意外的EOF。
我该怎么做?
到目前为止我的代码:
Modular.py
def _base_b_convert(n, b):
if b < 1 or n < 0:
raise ValueError("Invalid Argument")
q = n
a = []
while q != 0:
value = int(q % b)
a.append(value)
q =int(q / b)
return a
def mod_exp(base, n, mod):
if base < 0 or n < 0 or mod < 0:
raise ValueError("Invalid Argument")
a = (_base_b_convert(n, 2))
x = 1
pow = base % mod
for i in range(0, len(a)):
if a[i] == 1:
x = (x * pow) % mod
pow = pow**2 % mod
return x
main.py
from encryptions import Encryptions
def main():
enc = Encryptions()
message = enc.encrypt(message)
print(message)
print()
print("Decrypting message:")
message = enc.decrypt(message)
print(message)
input("--Press any key to end--")
if __name__ == '__main__':
main()
答案 0 :(得分:2)
input()
不是你想象的那样 - 而是评估作为Python代码输入的字符串,这不是你想要的。相反,请使用raw_input
。
至于你的缩进问题,这只是Python语法。你无能为力。
答案 1 :(得分:2)
你的缩进是关闭的。有时你有3个空格,有时是4个,有时是5个。
另一个例子是
def mod_exp(base, n, mod):
if base < 0 or n < 0 or mod < 0:
raise ValueError("Invalid Argument")
a = (_base_b_convert(n, 2))
x = 1
pow = base % mod
for i in range(0, len(a)):
if a[i] == 1:
x = (x * pow) % mod
pow = pow**2 % mod
return x
它看起来应该更像
def mod_exp(base, n, mod):
if base < 0 or n < 0 or mod < 0:
raise ValueError("Invalid Argument")
a = (_base_b_convert(n, 2))
x = 1
pow = base % mod
for i in range(0, len(a)):
if a[i] == 1:
x = (x * pow) % mod
pow = pow**2 % mod
return x
每当你使用if,while,for etc等时,你需要缩进一个级别。
(这些问题可能只是因为它被严重复制到stackoverflow中?)