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

本文继续介绍PlayFair密码算法,首先讲解如何对密文进行解密,包括所需参数和解密过程。接着,阐述明文加密的步骤,包括明文预处理和加密。文章以简单易懂的方式解释了加密和解密的互逆关系,并提醒读者理解解密过程就能反向操作。最后,对预处理明文的加密进行了说明。
摘要由CSDN通过智能技术生成

这里写图片描述
大家好,还是我!
这里是续上篇的内容继续来教大家完成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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值