Python中的RSA密码术

时间:2017-10-08 13:14:14

标签: python rsa

我想在Python中试用RSA加密函数,但我的脚本在pyCharm中不起作用。有人可以解释一下我做错了什么吗? random.sample和random.choice给出了一个我相信的问题......

from functools import *
import _random

def inverse(e,m):
    return filter(lambda d: e*d % m == 1, range(1, m))[0]

def sift(toRemove, numList):
    '''Takes a number, toRemove, and a list of numbers, numList.
    Returns the list of those numbers in numList that are not multiples of toRemove.'''

    return list(filter(lambda x: x % toRemove != 0, numList))

def primeSieve(numberList):
    '''Returns the list of all primes in numberList, using a prime sieve algorithm.'''
    if numberList == []:      # if the list is empty,
        return []             # ...we're done
    else:
        prime = numberList[0]  # The first element is prime!
        return [prime] + primeSieve(sift(prime, numberList[1:]))

def makeEncoderDecoder():

    p, q = _random.sample(primeSieve(list(range(2, 10))), 2)
    n = p*q
    m = (p-1)*(q-1)
    print("Maximum number that can be encrypted is", n-1)

    e = _random.choice(primeSieve(list(range(2, m))))
    if m / e == 0:
        print ("Please try again")
        return
    else:
        d = inverse(e, m)
        encoder = lambda x: (x**e)
        decoder = lambda y: (y**d)
        return [encoder, decoder]

0 个答案:

没有答案