整理了一些东西,方便单表密码分析。 分析单表替换密码:http://www.counton.org/explorer/codebreaking/frequency-analysis.php
这网站上同时还有一些简单的密码分析 下面是一个替换后上下两行显示明密文通过颜色对比的shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #!/bin/bash
cipher="oivqmqgn, yja vibem naarn yi yxbo sqnyab yjqo q zixuea is gaqbn qdi. ykra jqn zira yi baseazy yjqy qeni ko yja ujbqzw rqdqhkoa. yjkn kn vjqy yja uquab saam kn qpixy: gix nxprky q uquab, va backav ky qom ky dayn uxpeknjam. oi oaam yi vqky q rioyj ib yvi xoyke gix naa gixb qbykzea ko yja oafy ujbqzw knnxa, vjao yja ykra jqn zira, va'ee mazkma yi zirukea q oav knnxa sbir yja qbykzean yjqy jqca paao nxprkyyam. yjqy'n pqnkzqeeg ky. qom dbqp gix seqd jaba, zbguyiiiniziieqrkbkdjy?" tranOrl='yjaqnarikevz' tranRst='theasemoilwc'
echoKnownPlain() {
echo -n -e "33\[0m$133\[0m" } echoCipher() {
echo -n -e "33\[31m$133\[0m" } echoUnknownPlain() {
echo -n -e "33\[36m$133\[0m" }
plain=\`echo $cipher | tr $tranOrl $tranRst\`
cols=\`tput cols\`
echo echo tput cuu 2 tput sc for((i=0;i<${#plain};i++)) { tput rc echoCipher "${cipher:i:1}" tput sc tput cud 1 tput cub 1 if \[ "${plain:i:1}" != "${cipher:i:1}" \]; then echoKnownPlain "${plain:i:1}" else echoUnknownPlain "${plain:i:1}" fi
if (( $\[$cols-1\] == $\[$i%$cols\] )); then echo echo tput cuu 1 tput sc fi } echo
|
效果如下
最后是个简单的替换脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
""" rois_yf """
import sys import os import string
def main(): cipher = "oivqmqgn, yja vibem naarn yi yxbo sqnyab yjqo q zixuea is gaqbn qdi. ykra jqn zira yi baseazy yjqy qeni ko yja ujbqzw rqdqhkoa. yjkn kn vjqy yja uquab saam kn qpixy: gix nxprky q uquab, va backav ky qom ky dayn uxpeknjam. oi oaam yi vqky q rioyj ib yvi xoyke gix naa gixb qbykzea ko yja oafy ujbqzw knnxa, vjao yja ykra jqn zira, va'ee mazkma yi zirukea q oav knnxa sbir yja qbykzean yjqy jqca paao nxprkyyam. yjqy'n pqnkzqeeg ky. qom dbqp gix seqd jaba, zbguyiiiniziieqrkbkdjy?" print print (cipher) translate_table = string.maketrans('yjaqnarikovbceszxupgmd', 'theasemoinwrvlfcupbydg') print (cipher.translate(translate_table)) return
if \_\_name\_\_ == '\_\_main\_\_': main()
|