资源简介
使用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个文件信息
评论
共有 条评论