这个我之前写过
未加密文字:。(屠夫、面包师和蜡烛匠)。
关键密钥:
加密文字:
#include<stdio.h>
#include<string.h>
voidmain()
{
charstr[99],k[10],m[99]="";
unsignedi,j=0,n;
printf("输入要加版密的内容 ");
gets(str);
printf("输入密匙 ");
gets(k);
n=strlen(k);
for(i=0;i<strlen(str);i++)
{
权if(str[i]=='')m[i]='';
else
{
m[i]=str[i]+k[j]-'A';
if(m[i]>'Z')m[i]=m[i]-26;
j++;
}
if(j==n)j=0;
}
printf("加密后 ");
puts(m);
}
❷ 关于dat文件如何在c语言中进行简单加密
读取一个字节,然后左移3位+110 输出到另外的一个文件。思路是这样。
一个字节的话,完全不用考虑位过长问题。
读取8位并 -‘0’,使其变为整数,改10进制(此类代码我空间中正好有,你可以参考),
然后:(n<<3)|110
在输入到另外的一个文件中
如此循环。
❸ 凯撒密码的问题C语言
|#include<stdio.h>
#include<string.h>
int main()
{
char save[10][30];
int a,b,i,j;
scanf("%d",&a);
for(i=0;i<a;i++)
{
scanf("%d",&b);
getchar();//加这个
gets(save[i]);
for(j=0;j<30;j++)
{
if((save[i][j]>='A'&&save[i][j]<='Z')||(save[i][j]>='a'&&save[i][j]<='z'))
{
save[i][j]+=b;
if(((save[i][j]>='A'&&save[i][j]<='Z')||(save[i][j]>='a'&&save[i][j]<='z'))==0)
save[i][j]-=26;
}
}
}
for(i=0;i<a;i++)
{
puts(save[i]);
}
return(0);
}
❹ 用C语言编写一个加密程序字母对照的 原字母a b c d e i k , w 加密后a w k , i a b c e
为了实现字母的加密,可以采用结构体数组来定义加密对照表,代码示例如下:
#include<stdio.h>
struct table { char input,output; };
struct table translate[] = { 'a','a','b','w','c','k','d',',','e','a','k','b',',','c','w','e' };
建立的加密对照表中,原字母a, b, c, d, e, i, k, w对应加密后的a, w, k, a, b, c, e。
下面是加密程序的主函数:
int main() {
char ch;
struct table *p,*pend;
pend=&translate[sizeof(translate)/sizeof(struct table)-1];
while((ch=getchar())!='\n')
{
for(p=translate;p->input!=ch&&p!=pend;p++);
将p调整至对应的输出字符
if(p->input==ch) putchar(p->output);
输出对应的加密后的字符
else putchar(ch);
}
}
此程序通过对照表中的输入字符和输出字符来实现加密功能。
通过循环遍历输入字符,并根据对照表中的匹配关系进行加密处理。如果输入字符在对照表中找到匹配项,则输出对应的加密字符;否则直接输出原始字符。
这种方式简洁明了,易于理解和实现。
❺ 用C语言实现凯撒密码加密解密,急!
忘了说解密了,解来密自过程完全可以使用上面的代码,只要把key的值改成26-key就行了。比如,加密的密钥是3,那么解密密钥就是23,这样就可以使用同一段代码。至于为什么+23和-3的效果一样,还请翻阅数论有关剩余类环的知识。