Encryption Python RSA加密解密

Encryption Python RSA加密解密,encryption,rsa,Encryption,Rsa,我现在正在做一个关于多重加密方法的项目!我在RSA方面遇到了很多麻烦。我有一个加密代码,提供公钥和私钥。现在我需要让某人编写私钥和加密文本,并让程序解密。我尝试了很多次,安藤得到了很多不同的错误,我删除了解密函数,从头开始重新做。谁能给我点亮光吗?怎么做,我该怎么做。。。任何帮助,真的 代码如下: import random def totient(number): if(prime(number)): return number-1 else:

我现在正在做一个关于多重加密方法的项目!我在RSA方面遇到了很多麻烦。我有一个加密代码,提供公钥和私钥。现在我需要让某人编写私钥和加密文本,并让程序解密。我尝试了很多次,安藤得到了很多不同的错误,我删除了解密函数,从头开始重新做。谁能给我点亮光吗?怎么做,我该怎么做。。。任何帮助,真的

代码如下:

import random


def totient(number): 
    if(prime(number)):
        return number-1
    else:
        return False



def prime(n): 
    if (n <= 1):
        return False
    if (n <= 3):
        return True

    if (n%2 == 0 or n%3 == 0):
        return False

    i = 5
    while(i * i <= n):
        if (n%i == 0 or n%(i+2) == 0):
           return False
        i+=6
    return True



def generate_E(num): 
    def mdc(n1,n2):
        rest = 1
        while(n2 != 0):
            rest = n1%n2
            n1 = n2
            n2 = rest
        return n1

    while True:
        e = random.randrange(2,num) 
        if(mdc(num,e) == 1):
            return e


def generate_prime(): 
    while True: 
        x=random.randrange(1,100) 
        if(prime(x)==True):
            return x

def mod(a,b): 
    if(a<b):
        return a
    else:
        c=a%b
        return c


def cipher(words,e,n): 
    tam = len(words)
    i = 0
    lista = []
    while(i < tam):
        letter = words[i]
        k = ord(letter)
        k = k**e
        d = mod(k,n)
        lista.append(d)
        i += 1
    return lista



def calculate_private_key(toti,e):
    d = 0
    while(mod(d*e,toti)!=1):
        d += 1
    return d




## MAIN
if __name__=='__main__':
    text = input("Insert message: ")
    p = generate_prime() # generates random P
    q = generate_prime() # generates random Q
    n = p*q # compute N
    y = totient(p) # compute the totient of P
    x = totient(q) # compute the totient of Q
    totient_de_N = x*y # compute the totient of N
    e = generate_E(totient_de_N) # generate E
    public_key = (n, e)

    print('Your public key:', public_key)
    text_cipher = cipher(text,e,n)
    print('Your encrypted message:', text_cipher)
    d = calculate_private_key(totient_de_N,e)
    print('Your private key is:', d)
随机导入
def ToClient(编号):
如果(素数):
返回号码-1
其他:
返回错误
def基本(n):

如果(n)计算私钥的方式根本没有效率,最好使用贝佐特定理(与素性测试相同的注释)
k=k**e;d=mod(k,n)
。不要这样做,即使是小数字也太慢。相反,使用3参数版本的
pow()
d=pow(k,e,n)
计算相同的值,但速度要快得多。要解密,只需颠倒加密步骤,然后在正确的位置计算
pow(,d,n);
我假设您不允许使用加密库来进行此操作?