暴力不能解決一切問題
題解
題目明顯提示暴力方法,盲猜是一個簡單換位密碼,不同於凱撒密碼,每個字母對應的密文是完全混亂的:
abcdefghijklmnopqrstuvwxyz
qwertyuiopasdfghjklzxcvbnm
該演算法是根據每個字母出現的頻率來破解
使用爬坡演算法每次交換兩個字母,計算得分情況,得分越高,正確結果可能性越高
通過四字組確定與文字相似情況
程式碼
import random
import sys
from ngram_score import ngram_score
#引數初始化
text ='XEYREFKMMYZEFWMYHAKTYIXWXKJAPYRINEBIVYUHKXJNPAEUYGZKHYZRNPZATENPZAJANKMJKFLYUMXAAV'
template = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
key = {'A':'A'}
fitness = ngram_score('english_quadgrams.txt')
score = -99e9
maxn = -99e9
j = 0
while 1:
j +=1
n=len(template)
for i in range(n):
key[template[i]] = chr(ord('A')+i)
dic = text
for i in range(len(dic)):
dic = dic[:i]+key[dic[i]]+dic[i+1:]
score = fitness.score(dic)
count = 0
while count < 1000:
a = random.randint(0,25)
b = random.randint(0,25)
template[a],template[b]= template[b],template[a]
key[template[a]],key[template[b]] = key[template[b]],key[template[a]]
dic = text
for i in range(len(dic)):
dic = dic[:i]+key[dic[i]]+dic[i+1:]
sco = fitness.score(dic)
#此子金鑰代替其對應的父金鑰,提高明文適應度
if sco > score:
score = sco
count = 0
else:
template[a],template[b]=template[b],template[a]
key[template[a]],key[template[b]]=key[template[b]],key[template[a]]
count = count+1
if score > maxn:
maxn = score
print ('Currrent key: '+''.join(template))
print ('Iteration total:', j)
print ('Plaintext: ', dic,maxn)
sys.stdout.flush()
相關文章
- RAG能解決大模型的什麼問題?不能解決什麼問題?大模型
- 這個新 Go 錯誤處理提案,能解決問題不?Go
- 這個問題誰能解決啊?
- CRM能解決哪些企業管理問題?
- ERP能解決控制問題嗎?(轉)
- 分析CRM能解決哪些企業管理問題?
- 跨境電商ERP能解決的那些問題
- 能解決哪些企業管理問題的CRM?
- 企業實施PDM能解決這些問題
- 進銷存管理系統能解決哪些問題?
- 基本操作能解決的問題,不必勞煩機器學習機器學習
- 電子表格軟體能解決什麼問題?
- SLL證書的好處!能解決什麼問題!
- 六西格瑪諮詢公司能解決什麼問題?
- TOC系統能解決工廠中的哪些問題?
- URL請求不能解決中文請求的問題
- ORACLE 11G EM問題萬能解決辦法Oracle
- 非同步或者MQ為什麼能解決效能問題?非同步MQ
- banq大哥------只有你才能解決的登陸問題
- 什麼是智慧礦山?它能解決什麼問題?
- 點晴ERP系統究竟能解決哪些問題?
- 為什麼Docker不能解決雲上的所有問題Docker
- 大家好!這個Resin的中文問題誰能解決?
- a-textarea(textarea)出現模糊問題的可能解決方案
- 錢能解決一切? 開發者:懂得經營才是基本技能屬性
- 一切品牌問題的解決底牌,都在於活力
- leetcode.回溯演算法能解決什麼問題?LeetCode演算法
- DevOps|研發效能解決的是企業效率問題dev
- 種一民主樹也不能解決本質問題薦
- 用jdon框架出現的問題 一直不能解決框架
- IP/內容授權或能解決曝光率和成本問題
- 律所管理系統能解決律師事務所存在的這些問題
- Bash on Ubuntu on Windows 到底想幹啥?apt update又能解決啥問題?UbuntuWindowsAPT
- vr頭暈問題能解決?英偉達擔任眩暈終結者VR
- 透徹分析和解決一切javaWeb專案亂碼問題JavaWeb
- 我們在講的 Database Plus,到底能解決什麼樣的問題?Database
- 區塊鏈技術能解決貧富差距兩極分化問題嗎?區塊鏈
- CRM系統中的營銷自動化能解決什麼問題