一.凯撒密码演练:
- 下列密码采用N位偏移的方式进行加密
- 根据上述内容(结合单词字母个数,词频等)分析一下密码,并球得偏移量;
密文是:mjqqt hwduytlwfumd
给abcd…xyz上将数组从0到25
所以上述的字母为:11,9,16,16,19,空格 ,7,21,3,20,24,19,11,21,5,20,12,3
$num = "a" , "b", "c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"
for ($i = 0;$i -lt 26; $i++){
#Write-Output $num[0+$i]$num[1+$i] \n
$str1 = $num[(12+$i)%26] +$num[(9+$i)%26] +$num[(16+$i)%26] +$num[(16+$i)%26] +$num[(19+$i)%26] +" " + $num[(7+$i)%26] +$num[(22+$i)%26] +$num[(3+$i)%26] +$num[(20+$i)%26] +$num[(24+$i)%26] +$num[(19+$i)%26] +$num[(11+$i)%26] +$num[(22+$i)%26] +$num[(5+$i)%25] +$num[(20+$i)%26] +$num[(12+$i)%26] +$num[(3+$i)%26]
echo $str1
}
输出结果为:
最后给出的有意义的是:
hello crxptography
你好,密码学
偏移量是:
21
二.解密:
- 现有密文:
<VT><HT>++,<ACK>1)<NAK><STX>8'<SOH>/<DC4>
- 密文中<>之内的表示ASCLL码表中的特殊字符,如则表示ASCLL表中的字符VT
- 现在有密钥:EfcDAcFFgilHeNm
- 英文字母表为ASCLL码表
- 计算明文
首先在网上找到ASCLL码表:
把密文翻译成二进制为:
<VT><HT>++,<ACK>1)<NAK><STX>8'<SOH>/<DC4>
00001011 00001001 00101011 00101011 00101100 00000110 00110001 00101001 00010101 00000010 00111000 00100111 00000001 00101111 00010100
将密钥翻译成ASCLL码为:
EfcDAcFFgilHeNm
01000101 01100110 01100011 01000100 01000001 01100011 01000110 01000110 01100111 01101001 01101100 01001000 01100101 01001110 01101101
异或之后得到的结果是:
01001110 01101111 01001000 01101111 01101101 01100101 01110111 01101111 01110010 01101011 01010100 01101111 01100100 01100001 01111001
把异或之后的二进制通过ASCLL翻译成能看懂的字符是:
NoHomeworkToday