• 大小: 954KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-05
  • 语言: Python
  • 标签:

资源简介

使用python实现RSA加解密算法(包含读取文件操作),文件内容为16进制字符串,同时实现对学号姓名的加密——(SCU应用密码学实验)

资源截图

代码片段和文件信息

#-*- coding:UTF-8 -*-


‘‘‘ sichuan university

    author: guowenbo


    time:  2018-5-30


    content:RSA

    python 3.6

    mac os

‘‘‘

from random import randint
import random
import math
import sys


def  charToAscii(message):       #将字符转化为ASCII码
  Output = []
  for i in message:
      Output.append(ord(i))
  return Output

                                  #将ASCII码变为十六进制
def AsciiToHex(message):
  Output = ‘‘
  for each in message:
    Output = Output + str(hex(each)).split(‘x‘)[1]
  return Output


def Hex_to_dec(hexnumber):        #16进制字符串转化为十进制
    decnumber = int(hexnumber16)
    return decnumber



def dec_to_Hex(decumber):          #十进制转化为十六进制
    hexnumber = hex(decumber)
    return hexnumber



def big_P_Q():                  #产生两个大素数
    flag = 0
    while not flag:
        p = random.randrange(10**1010**11)

        if charge_sushu_1(p) and _ack(2p):

            q = random.randrange(p10**11)
            if charge_sushu_1(q) and p != q and _ack(2q):
                flag = 1
    return pq







def fastExpMod(b e m):          #快速求模
    result = 1
    while e != 0:
        if (e&1) == 1:
            # ei = 1 then mul
            result = (result * b) % m
        e >>= 1
        # b b^2 b^4 b^8 ...  b^(2^n)
        b = (b*b) % m
    return result

def gcd(ab):                     #判断互素
    if a        ab = ba
    while b != 0:
        temp = a%b
        a = b
        b = temp
    return (ab)


def find_e(En):                     #寻找e
    while 1:
        e = random.randrange(10000)
        if gcd(eEn) == (10):
            break

    return e

def find_d(es):                    #求d

    u1 u2 u3 = 1 0 e
    v1 v2 v3 = 0 1 s
    while v3 != 0:
        q = u3 // v3
        v1 v2 v3 u1 u2 u3 = (u1 - q * v1) (u2 - q * v2) (u3 - q * v3) v1 v2 v3
    return u1 % s

# def miller_Rabin(n):                #素性检验
#     if n == 1:
#         return False
#     if n == 2:
#         return True
#     N = n-1
#     a = randint(2 N)
#     t = int(math.floor(math.log(N2)))
#     u = 1
#     while t>0:
#         u = N/2**t
#         if N%2*t==0 and u%2 == 1:
#             break
#         u = t-1
#     b = fastExpMod(aun)
#     if(b == 1):
#         return True
#
#     for n in range(0t1):
#         if(b == n-1):
#             return True
#         else:
#             b = fastExpMod(b2n)
#     return False

def charge_sushu_1(n):
    Sushu = (2 3 5 7 11 13 17 19 23 29 31 37 41
                  43 47 53 59 61 67 71 73 79 83 89 97)
    for y in Sushu:
        if n % y == 0:
            return False
    return True

def _ack(an):

    a1 = pow(17-ann)
    a2 = pow(17nn) - (a%n)
    if a1 == a2:
        return 1
    else:
        return 0

def charge_sushu_2(n k):
    if n < 2:
           return False
    d = n - 1
    r = 0
    while not (d & 1):
            r += 1
            d >>= 1
    for i in range(k):
            a = randint(120)        #随机数
            x = fastExp

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-06-05 09:18  RSA_guowenbo\
     文件      198606  2018-06-03 22:18  RSA_guowenbo\灞忓箷蹇収 2018-06-03 22.18.25 2.png
     目录           0  2018-06-05 09:18  __MACOSX\
     目录           0  2018-06-05 09:18  __MACOSX\RSA_guowenbo\
     文件         583  2018-06-03 22:18  __MACOSX\RSA_guowenbo\._灞忓箷蹇収 2018-06-03 22.18.25 2.png
     文件      102662  2018-06-04 22:52  RSA_guowenbo\灞忓箷蹇収 2018-06-04 22.52.33.png
     文件         531  2018-06-04 22:52  __MACOSX\RSA_guowenbo\._灞忓箷蹇収 2018-06-04 22.52.33.png
     文件        6148  2018-06-04 17:54  RSA_guowenbo\.DS_Store
     文件         172  2018-06-04 17:54  __MACOSX\RSA_guowenbo\._.DS_Store
     文件      193340  2018-06-04 18:58  RSA_guowenbo\灞忓箷蹇収 2018-06-04 18.58.03.png
     文件         588  2018-06-04 18:58  __MACOSX\RSA_guowenbo\._灞忓箷蹇収 2018-06-04 18.58.03.png
     文件          26  2018-06-05 09:15  RSA_guowenbo\rsa_cipher.txt
     文件         436  2018-06-05 09:15  __MACOSX\RSA_guowenbo\._rsa_cipher.txt
     文件       43575  2018-06-03 19:50  RSA_guowenbo\灞忓箷蹇収 2018-06-03 19.50.12.png
     文件         583  2018-06-03 19:50  __MACOSX\RSA_guowenbo\._灞忓箷蹇収 2018-06-03 19.50.12.png
     文件      200386  2018-06-04 18:58  RSA_guowenbo\灞忓箷蹇収 2018-06-04 18.58.28.png
     文件         588  2018-06-04 18:58  __MACOSX\RSA_guowenbo\._灞忓箷蹇収 2018-06-04 18.58.28.png
     文件       10873  2018-06-04 23:17  RSA_guowenbo\RSA.py
     文件          60  2018-06-05 09:15  RSA_guowenbo\rsa_cipher_SN.txt
     文件         436  2018-06-05 09:15  __MACOSX\RSA_guowenbo\._rsa_cipher_SN.txt
     文件          24  2018-06-05 09:15  RSA_guowenbo\rsa_plain.txt
     文件         436  2018-06-05 09:15  __MACOSX\RSA_guowenbo\._rsa_plain.txt
     文件          18  2018-06-05 09:15  RSA_guowenbo\n.txt
     文件         228  2018-06-05 09:15  __MACOSX\RSA_guowenbo\._n.txt
     文件      342983  2018-06-04 15:40  RSA_guowenbo\灞忓箷蹇収 2018-06-04 15.40.01.png
     文件         583  2018-06-04 15:40  __MACOSX\RSA_guowenbo\._灞忓箷蹇収 2018-06-04 15.40.01.png
     文件           3  2018-06-05 09:15  RSA_guowenbo\e.txt
     文件         228  2018-06-05 09:15  __MACOSX\RSA_guowenbo\._e.txt
     文件          33  2018-06-02 17:34  RSA_guowenbo\rsa_pubkey.txt
     文件         436  2018-06-02 17:34  __MACOSX\RSA_guowenbo\._rsa_pubkey.txt
     文件          18  2018-06-05 09:15  RSA_guowenbo\d.txt
............此处省略9个文件信息

评论

共有 条评论

相关资源