這個我之前寫過
未加密文字:。(屠夫、麵包師和蠟燭匠)。
關鍵密鑰:
加密文字:
#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的效果一樣,還請翻閱數論有關剩餘類環的知識。