資源簡介
使用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個文件信息
評論
共有 條評論