移位密码原理及算法实现

简介: 移位密码算法原理   移位密码又称为移位代换密码,是单表代换密码中的一种,它的加解密过程可以用以下方式表示:   C=Ek(s)=(s+k) mod n,   S=Dk(c)=(c-k) mod n, 其中,c表示密文字符,s表示明文字符,k表示移位的数字,n表示代换字符集的字符总个数,当字符集为26个字母时的移位算法就是凯撒密码。

移位密码算法原理

  移位密码又称为移位代换密码,是单表代换密码中的一种,它的加解密过程可以用以下方式表示:

  C=Ek(s)=(s+k) mod n,

  S=Dk(c)=(c-k) mod n,

其中,c表示密文字符,s表示明文字符,k表示移位的数字,n表示代换字符集的字符总个数,当字符集为26个字母时的移位算法就是凯撒密码。

移位密码算法实现

 1 #include <iostream>
 2 #include <fstream>
 3 #include <cstdlib>
 4 using namespace std;
 5 class Shift
 6 {
 7 public:
 8     Shift();
 9     static void encryption(ifstream& fin,ofstream& fout,int n);
10     static void decryption(ifstream& fin,ofstream& fout,int n);
11 };
12 void Shift::encryption(ifstream& fin,ofstream& fout,int n)//加密过程
13 {
14     char next;
15     while(fin.get(next))
16     {
17         fout<<char((int(next)+n)%128);
18     }
19 }
20 void Shift::decryption(ifstream& fin,ofstream& fout,int n)//解密过程
21 {
22     char next;
23     while(fin.get(next))
24     {
25         fout<<char((int(next)-n)%128);
26     }
27 }
28 int main()
29 {
30     ifstream fin;
31     ofstream fout;
32     fin.open("file1_2.in");
33     while(fin.fail())
34     {
35         cout<<"File open error!(Input)"<<endl;
36         exit(1);
37     }
38     fout.open("file1_2.out");
39     if(fout.fail())
40     {
41         cout<<"File open error!(Output)"<<endl;
42     }
43     Shift::encryption(fin,fout,1);
44     fin.close();
45     fout.close();
46     return 0;
47 }

输入file1_2.in

//file1_2.in
we will attack tomorrow morning

输出file1_2.out

//file1_2.out
xf!xjmm!buubdl!upnpsspx!npsojoh

 

目录
相关文章
|
2月前
|
数据采集 机器学习/深度学习 算法
|
25天前
|
机器学习/深度学习 算法 Python
群智能算法:深入解读人工水母算法:原理、实现与应用
近年来,受自然界生物行为启发的优化算法备受关注。人工水母算法(AJSA)模拟水母在海洋中寻找食物的行为,是一种新颖的优化技术。本文详细解读其原理及实现步骤,并提供代码示例,帮助读者理解这一算法。在多模态、非线性优化问题中,AJSA表现出色,具有广泛应用前景。
|
2月前
|
前端开发 算法 JavaScript
React原理之Diff算法
【8月更文挑战第24天】
|
2月前
|
机器学习/深度学习 算法 搜索推荐
【机器学习】机器学习的基本概念、算法的工作原理、实际应用案例
机器学习是人工智能的一个分支,它使计算机能够在没有明确编程的情况下从数据中学习并改进其性能。机器学习的目标是让计算机自动学习模式和规律,从而能够对未知数据做出预测或决策。
56 2
|
2月前
|
机器学习/深度学习 算法 数据可视化
决策树算法介绍:原理与案例实现
决策树算法介绍:原理与案例实现
|
2月前
|
算法
PID算法原理分析及优化
今天为大家介绍一下经典控制算法之一的PID控制方法。PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。 在大学期间,参加的智能汽车竞赛中就使用到了PID经典控制算法,对于智能小车的调试更加的方便。 一、PID原理 PID控制方法将偏差的比例(proportional)、积分(integral)、微分(derivative)通过线性组合构成控制量,对被控对象进行控制。 常规的PID控制系统如图所示: 系统的输入r(t)为控制量的目标输出值,输出y(t)为控制量的实际输出值,e(t)为输出量目标值与实际值
49 1
|
2月前
|
存储 负载均衡 监控
自适应负载均衡算法原理和实现
自适应负载均衡算法原理和实现
|
2月前
|
算法 安全 网络安全
Diffie-Hellman (DH) 算法的工作原理
【8月更文挑战第23天】
118 0
|
2月前
|
存储 算法 安全
密码算法的分类
【8月更文挑战第23天】
40 0
|
2月前
|
数据采集 搜索推荐 算法
【高手进阶】Java排序算法:从零到精通——揭秘冒泡、快速、归并排序的原理与实战应用,让你的代码效率飙升!
【8月更文挑战第21天】Java排序算法是编程基础的重要部分,在算法设计与分析及实际开发中不可或缺。本文介绍内部排序算法,包括简单的冒泡排序及其逐步优化至高效的快速排序和稳定的归并排序,并提供了每种算法的Java实现示例。此外,还探讨了排序算法在电子商务、搜索引擎和数据分析等领域的广泛应用,帮助读者更好地理解和应用这些算法。
24 0
下一篇
无影云桌面