所有方法都需要缩进一级,以表明它们是python中类的方法

时间:2013-02-17 15:02:41

标签: python encryption rsa

我正在遵循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()

2 个答案:

答案 0 :(得分:2)

Python 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中?)