凯撒加解密算法C语言实现
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
凯撒加密(Caesarcipher)是一种简单的消息编码方式:它根据字母表将消息中的每个字母移动常量位k。
举个例子如果k等于3,则在编码后的消息中,每个字母都会向前移动3位:
a会被替换为d;b会被替换成e;依此类推。字母表末尾将回卷到字母表开头。
于是,w会被替换为z,x会被替换为a。
如果是将移动的位数用随机数进行代替,并且记录下该随机数,则破解密码的难度将大大增加。
//linux c 代码
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
//加密
int kaisa_encrypt(const char *str1,char *str2,const int len)
{
int i;
if(str1 == NULL || str2 == NULL || len <= 0){
return -1;
}
int m = strlen(str1);
if(m <= 0){
return -1;
}
for(i=0;i<m;i++)
{
if(str1[i]>='a'&&str1[i]<='z')
str2[i]='a'+(str1[i]-'a'+len)%26;
else
str2[i]=str1[i];
}
return 0;
}
//解密
int kaisa_decrypt(const char *str2,char *str3, const int len)
{
int i;
char all_letter[26]="abcdefghijklmnopqrstuvwxyz";
if(str3 == NULL || str2 == NULL || len <=0){
return -1;
}
int m = strlen(str2);
if(m <= 0){
return -1;
}
for(i=0;i<m;i++)
{
if(str2[i]>=all_letter[len]&&str2[i]<='z')
str3[i]=str2[i]-len;
else if(str2[i]>='a'&&str2[i]<=all_letter[len-1])
str3[i]=str2[i]+(26-len);
else
str3[i]=str2[i];
}
return 0;
}
int main()
{
char str1[20]="binbin";
char str2_encrypt[20]="";
char str3_decrypt[20]="";
/***加密****/
kaisa_encrypt(str1,str2_encrypt,3);
printf("原文%s-->密文%s\n",str1,str2_encrypt);
/***解密****/
kaisa_decrypt(str2_encrypt,str3_decrypt,3);
printf("密文%s-->原文%s\n",str2_encrypt,str3_decrypt);
return 0;
}
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献8条内容
所有评论(0)