密码学的练习题

一.凯撒密码演练:

  • 下列密码采用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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值