900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 换位加密 换位加密测试 外部文件加密 英文识别 暴力破解换位加密

换位加密 换位加密测试 外部文件加密 英文识别 暴力破解换位加密

时间:2022-10-29 09:49:02

相关推荐

换位加密 换位加密测试 外部文件加密 英文识别 暴力破解换位加密

换位加密(更新)

def main():

message = "H cb irhdeuousBdi prrtyevdgp nir

eerit eatoreechadihf paken ge b te dih aoa.da tts tn."

key = 9 decyption = decyption_function(key,message) print(decyption + "|")def decyption_function(key,message): tuple_num = math.ceil(len(message)/key) value_num = key empty_value = value_num*tuple_num - len(message) text = [""] * tuple_num tuple_position = 0 value_position = 0 for i in message: text[tuple_position] = text[tuple_position] + i tuple_position += 1 if tuple_position == tuple_num or \

tuple_position == tuple_num - 1 and value_position >= value_num - empty_value:

tuple_position = 0 value_position += 1 return "".join(text)main()

这样写我自己反而能理解一些

换位加密、解密测试

import random,sys,TranspositionDecrypt,TranspositionEncryptdef main(): random.seed(42) for i in range (20):

message = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" * random.randint(4,40)

# random seed + random.randit,the fake random number

message = list(message) random.shuffle(message) message = "".join(message) print(i+1,message[:50]) for key in range(1,len(message)): encrypted = TranspositionEncrypt.encryptmessage(key,message) decrypted = TranspositionDecrypt.decryptMessage(key,encrypted) if message != decrypted:print("mismatch with key %s and message%s."%(key,message))print(decrypted)sys.exit() print("test pass")if __name__ == "__main__": main()

讲真不太知道这个代码做啥

外部文件加密(换位加密)

import time, os, sys,TranspositionDecrypt,TranspositionEncrypt# 首先确定导出文件名,输出文件名,秘钥,以及modedef main(): inputFilename = "frankenstein.txt" outputFilename = "frankenstein.encrypted.txt" Key = 10 Mode = "encrypt"# 对于导入文件,先要确定该文件是否存在。 if not os.path.exists(inputFilename): print("The file %s does not exist. Quitting..." % (inputFilename)) sys.exit()# 对于导出文件,也要确定是否存在 if os.path.exists(outputFilename): print("This will overwrite the file %s. (C)ontinue or (Q)uit?" % (outputFilename)) response = input("> ") if not response.lower().startswith("c"): sys.exit()

# 打开导入文件后,要转换为read模式不然无法读取文件。

open相当于双击鼠标,文本显示就是一个read的形式

# read后要进行close fileObj = open(inputFilename) content = fileObj.read() fileObj.close() print("%sing..." % (Mode.title())) startTime = time.time() if Mode == "encrypt": translated = TranspositionEncrypt.encryptmessage(Key, content) elif Mode == "decrypt": translated = TranspositionDecrypt.decryptMessage(Key, content) totalTime = round(time.time() - startTime, 2) print("%sion time: %s seconds" % (Mode.title(), totalTime))# 导出文件首先也需要进行open(双击),然后设置为写入模式。 outputFileObj = open(outputFilename, "w") outputFileObj.write(translated) outputFileObj.close() print("Done %sing %s (%s characters)." % (Mode, inputFilename, len(content))) print("%sed file is %s." % (Mode.title(), outputFilename))if __name__ == "__main__": main()

英文识别

UPPERLETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"letter_and_space = UPPERLETTERS + UPPERLETTERS.lower() + " \t\n"def loadDictionary(): dictionaryFile = open("dictionary.txt") englishwords = {} for i in dictionaryFile.read().split("\n"): englishwords[i] = None# 对dictionary这个文本进行改写,一定要进行read模式。# None的作用在于不评论任何文本。如果文本为空,不进行返回。 dictionaryFile.close() return englishwordsEnglish_Words = loadDictionary()# message需要进行加密,def getEnglishCount(message):# 就我自己而言,为了方便理解我应该会写成def recognized_word(message) message = message.upper() message = removeNonletter(message)# 按道理来说,message经过remooveNonletter处理后,没有非英文的字符串 possiblewords = message.split() if possiblewords == []: return 0.0# 检查,以防万一。返回为0后,len不会计算这个返回的值# possibleword 包含了正常的英文,也包含了不正当的英文比如说aaa,bbb,ccc matches = 0 for i in possiblewords: if i in English_Words: matches += 1 return float(matches)/len(possiblewords)# match ,可别识别的英文/ 可识别英文 + 不可被识别的英文def removeNonletter(message): letterONLY = [] for i in message: if i in letter_and_space: letterONLY.append(i) return "".join(letterONLY)# 该函数消除非字母的str,比如说,。!123这些。这些str在返回后成为空的str.def isEnglish(message, wordPercentage=20, letterPercentage=85): wordsMatch = getEnglishCount(message) * 100 >= wordPercentage numLetters = len(removeNonletter(message)) messageLettersPercentage = float(numLetters) / len(message) * 100 lettersMatch = messageLettersPercentage >= letterPercentage return wordsMatch and lettersMatch

使用英文识别进行暴力破解换位加密

import pyperclip,TranspositionDecrypt,detectEnglishdef main(): message = """Cb b rssti aieih rooaopbrtnsceee er es no npfgcwu plri ch nitaalr eiuengiteehb(e1 hilincegeoamn fubehgtarndcstudmd nM eu eacBoltaeteeoinebcdkyremdteghn.aa2r81a condari fmps" tad l t oisn sit u1rnd stara nvhn fsedbh ee,n e necrg6 8nmisv l nc muiftegiitm tutmg cm shSs9fcie ebintcaets h aihda cctrhe ele 1O7 aaoem waoaatdahretnhechaopnooeapece9etfncdbgsoeb uuteitgna.rteoh add e,D7c1Etnpneehtn beete" evecoal lsfmcrl iu1cifgo ai. sl1rchdnheev sh meBd ies e9t)nh,htcnoecplrrh ,ide hmtlme. pheaLem,toeinfgn t e9yce da" eN eMp a ffn Fc1o ge eohg dere.eec s nfap yox hla yon. lnrnsreaBoa t,e eitsw il ulpbdofgBRe bwlmprraio po droB wtinue r Pieno nc ayieeto"lulcih sfnc ownaSserbereiaSm-eaiah, nnrttgcC maciiritvledastinideI nn rms iehn tsigaBmuoetcetias rn""" hacking = hackTransposition(message)# 读取密文,然后设置一个解密函数 if hacking == None: print("Fail") else: print("copy") print(hacking)# hacking 不为None的时候,将hacking输出 pyperclip.copy(hacking)def hackTransposition(message): print("Hacking") print(("press crtl-c or crtl-d to quit at anytime"))# python 可以在任意时刻被crtl - c 暂停 for key in range(1,len(message)): print("trying key #%s"%(key)) decrypt_text = TranspositionDecrypt.decryptMessage(key,message) if detectEnglish.isEnglish(decrypt_text): #密文解密后,在isEnglish中进行查找匹配 print() print("possible encryption hack:") print("key:%s,%s"%(key,decrypt_text[:100])) print() print("enter D for done, or continue:") response = input(">") if response.strip().upper().startswith("D"):return decrypt_text return Noneif __name__ == "__main__": main()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。