A Caesar Encryptor ———— 凯撒加密算法的C 语言实现

A Caesar Encryptor ———— 凯撒加密算法的C 语言实现

凯撒加密(Caesar Encryption)是一个最简单的加密算法,利用移位,能够将英文字母替换成另一个位置上的字母,从而加密。
优点是实现起来非常简单,缺点是容易被破解。
下面用C语言实现一个,用户输入明文(plain text)和移位数,终端输出密文(cipher)的凯撒加密器。

原理

参考 凯撒加密原理--知乎

代码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char** argv)
{
	if(argc != 3)
	{
		printf("参数: [明文] [移位数]\n");
	}
	//初始化
	int step = atoi(argv[2]);//移位数
	const char*  plain_text = argv[1];//指向明文argv[1]
	int len = strlen(plain_text)+1;//明文长度,包括最后的\0
	char * cipher = (char*)malloc(len*sizeof(char));//密文
	int i=0;
	step %= 26;
	
	/*
	printf("plain text = %s \n", plain_text);
	printf("step = %d \n", step);
	printf("len = %d \n", len);
	*/
	
	//遍历字母,移位变换
	/*
	while(i<len-1)
	{	
		//printf("plain_text[%d]=%c\n",i,plain_text[i]);
		cipher[i] = (plain_text[i]%'a'+step)%26+'a';
		i++;
	}
	*/
	for(i=0;i<len-1;i++)
	{	
		//printf("plain_text[%d]=%c\n",i,plain_text[i]);
		cipher[i] = (plain_text[i]%'a'+step)%26+'a';
	
	}
	
	cipher[len-1]=0;
	printf("cipher is: %s \n", cipher);
	return 0;
}

/*
 *注意,目前只能处理英文的小写,甚至无法处理普通的数字、符号
 而且只能做简单的加密处理。
 * */

输入 ./a.out helloworld 4

输出 cipher is: lippsasvph

-- 2022年 07月 13日 星期三 14:15:57 CST

posted @   lucky_doog  阅读(568)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示