移位密码学

题目如下:

移位加密是密码学中一种非常经典、也是很重要的加密方法,学好移位加密对后面其他加密方法的学习有着至关重要的作用。使用 c++ 实现移位密码方法,然后对输入的明文字符串进行移位加密后打印输出。先读取输入 K,表示移位密码的参数。然后读取输入的一个只含小写字母的字符串。要求你输出该字符串经过 K 位加密之后的加密串,其中串的长度在 100 以内,0<=K<=25。

模运算

假设a和b均为整数,m是一正整数。若m整除b−a,则可将其表示为:

a≡b(mod m)

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

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

 
  1. constexpr int mod=9; // 模数 mod 取值为9
  2. int a[10]= {2,11,12};
  3. for(size_t i=1; i<3; i++) // 循环遍历数组 a 中所有的数字对
  4. if((a[i]-a[i-1])%mod==0) // 判断mod是否可以整除两数之差
  5. cout<<a[i-1]<<"与"<<a[i]<<"模"<<mod<<"同余"<<endl;

输出:
2与11模9同余

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

代码如下:

#include<bits/stdc++.h>  
using namespace std;  
char S[100];
int main()  
{  
    int K;  
    scanf("%d",&K);  
    cin>>S;  
    for(int i=0; i<strlen(S); i++)  
        printf("%c",'a'+((S[i]-'a'+K)%26));
  
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值