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