educoder之密码学

第1关:移位密码

任务描述

移位加密是密码学中一种非常经典、也是很重要的加密方法,学好移位加密对后面其他加密方法的学习有着至关重要的作用。

本关任务:使用 c++ 实现移位密码方法,然后对输入的明文字符串进行移位加密后打印输出。

相关知识

为了完成本关任务,你需要掌握:1.数论中的模运算;2.定义模 m 上的运算;3.移位密码体制。

模运算

假设ab均为整数,m是一正整数。若m整除ba,则可将其表示为:

ab(mod m)

该式读作“abm同余”,正整数m称为模数。

下面给出计算一组数据中符合指定模数的同余的数字对,具体 C++ 代码示例如下:

constexpr int mod=9;     // 模数 mod 取值为9
int a[10]= {2,11,12};

for(size_t i=1; i<3; i++)     // 循环遍历数组 a 中所有的数字对
    if((a[i]-a[i-1])%mod==0)     // 判断mod是否可以整除两数之差
        cout<<a[i-1]<<"与"<<a[i]<<"模"<<mod<<"同余"<<endl;

输出:2与11模9同余

上述代码通过遍历数组 a 中的所有数字对,判断模数能否整除数字对中两数之差,从而找出符合条件的数字对。

模上的运算

通俗的理解,模 m 上的运算就是:在模 m 的集合上定义加法和乘法,下面给出具体定义。

Zm表示集合

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值