本文主要是介绍1402:Vigenère密码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
加密的运算为:对明文中的每个字母c,按照密钥k (A~Z)进行0~25的右偏移生成密文m。
那么解码的运算为:对密文中的每个字母m,按照密钥k(A~Z)进行0~25的左偏移生成明文c。
#include <iostream>
#include <string>
using namespace std;
void solve(string k, string m) {int lk = k.size(), lm = m.size();string s;for (int i = 0; i < lk; i++)if (k[i] >= 'a' && k[i] <= 'z')k[i] = k[i] - 'a' + 'A';for (int i = 0; i < lm; i++) {if (m[i] >= 'A' && m[i] <= 'Z') {s += (m[i] - 'A' + 26 - (k[i % lk] - 'A')) % 26 + 'A';}else {s += (m[i] - 'a' + 26 - (k[i % lk] - 'A')) % 26 + 'a';}}cout << s;
}
int main() {string st1, st2;cin >> st1 >> st2;solve(st1, st2);return 0;
}
这篇关于1402:Vigenère密码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!