【阿库娅教你X代码】PlayFair密码——1

这里写图片描述
大家好,还是我!
这里是续上篇的内容继续来教大家完成PlayFair这个密码算法!

上次讲到了完成PF表的建立,那么已经可以利用它对明文进行加密了——或者是对密文进行解密。
由于对明文加密多了一道明文预处理的工序,所以我们先讲解密文加密


step2.1:对密文解密

  • 我们完全可以想象得到,这个解密函数(pfDeCrePtion)应该是酱紫的:
    void pfdcp(string et, string pf[5][5] , int alp[3][26] , string nct[])
    也就是至少需要密文(EncriptionText)、pf表、字母表 以及得到的 新明文(NewClearText) 作为参数
  • 首先要分组遍历明文,显然只要我们一次考察密文中的两个元素即可

    for(int i = 0 ; i < et.length() ; i+=2){  
    //将密文字母转化为对应字母表的下标   
        int cti1 = (int)et[i];  
        cti1-=97;  
        int cti2 = (int)et[i+1];  
        cti2-=97;
    
     //得到这俩字母的座标,从而判断其 同行or同列or对角
         int frow = alp[1][cti1], fline = alp[2][cti1];
         int srow = alp[1][cti2], sline = alp[2][cti2];
    
  • 接下来我们就可以根据相对位置的判断结果,将第i和i+1个明文输入到 新明文nct 中了

    if(frow == srow){//同行
        if(fline - sline == -1){//判断看是否黏着,还要看俩字母哪个前哪个后
            nct[i] = p
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值