本文将介绍四种古典密码算法并进行代码实现:
- 使用 C++ 实现4种古典密码算法
- 明文:I am learning coding
4种古典密码
1.仿射密码
加密算法:c = a*m + b(mod n)
加密过程:
- 获取a,b,n;(若未知)
- 获取明文字符串;
- 将每一个明文字符转换成对应的数字;
- 将明文数字带入公式c = a*m + b(mod n),获取密文对应数字;
- 将密文数字转换成对应的密文字符。
代码
Affine password.h
#ifndef Affine_password_h
#define Affine_password_h
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
int affine(string Inform)
{
int n = 36;
string c;
int buff[32], len = 0, key1 = 0, key2 = 0;
cout << "输入key1:";
cin >> key1;
cout << "输入key2:";
cin >> key2;
//把明文转化成10进制整数,0-9,a-z分别代表十进制0-36
for (int i = 0; Inform[i] != '\0'; i++)
{
//字母转10进制整数
if (Inform[i] > '9')
buff[i] = Inform[i] - 87;
else
buff[i] = Inform[i] - 48;//0ASCII为48
len++;
}
//加密运算,C=k1*m+k2 mod n;
for (int i = 0; i < len; i++)
{
buff[i] = (buff[i] * key1 + key2) % n;
}
//把数字对应为密文空间内的字符
for (int i = 0; i < len; i++)
{
if (buff[i] < 10)
Inform[i] = buff[i] + 48;
else
Inform[i] = buff[i] + 87;
}
cout << "密文:" << endl;
for (int i