电文加密---通过C语言实现

           

题目是这样的:

著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,密码学是信息安全等相关议题,如认证、访问控制的核心。密码学已被应用在日常生活:包括 自动柜员机的芯片卡、电脑使用者存取密码、 电子商务等等。 在通信过程中,待加密的信息称为明文,已被加密的信息称为密文,仅有收、发双方知道的信息称为密钥。在密钥控制下,由明文变到密文的过程叫加密,其逆过程叫脱密或解密。 由于古时多数人并不识字,最早的秘密书写的形式只用到纸笔或等同物品,随着识字率提高,就开始需要真正的密码学了。最古典的两个加密技巧是:

(1)置换(Transposition cipher):将字母顺序重新排列,例如‘help me’变成‘ehpl em’。

(2)替代(substitution cipher):有系统地将一组字母换成其他字母或符号,例如‘fly at once’变成‘gmz bu podf’(每个字母用下一个字母取代,密钥为1)。

本关任务:

本任务采用替代密码,对一段电文进行加密: 将电文中的大(小)写字母变为其后的第n(如n=3时)个字母,并将最后n个字母,如n=3时的X、Y、Z变为A、B、C。 例如,密钥n=1时: 输入明文:fly at once
经加密后的密文为:gmz bu podf

例如,密钥n=3时: 输入明文:fly at once
经加密后的密文为:iob dw rqfh

例如,密钥n=25时: 输入明文:Fly at once
经加密后的密文为:Ekx zs nmbd

相关知识:

明文、密文、密钥、加密和解密; 替代密码

编程要求

将电文中的大写字母变为其后的第n(小于等于26)个字母,并将最后n个字母,如n=3时的X、Y、Z变为A、B、C。

本关涉及的代码文件的代码框架如下: #include <stdio.h> // 标准输入输出库函数 int main() // 定义main函数 { int ch; //存字符的ASCII码值 int n; //n存密钥,如1,3,25 scanf("%d",&n); getchar(); //吸收回车键值 // 请在此添加算法核心代码 /** Begin *****/

/** End **/ return 0; }

#include <stdio.h> 
int main() 
{ 
	
	int ch;
	int n;
	scanf("%d",&n);
	getchar(); 
	unsign char c;
	while((c=getchar())!='\n') 
	{ 
		if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) 
		{ 
			c=c+n; 
			if((c> 'Z'&&c<= 'Z'+n)||(c>'z')) c=c-26; 
		} 
		printf("%c",c);
	} 



	return 0;
}

作者码字不易,给个赞坚持下去。

Guess you like

Origin blog.csdn.net/qq_46069852/article/details/120612639