c凱撒加密
#include<stdio.h>
#defineisletter(c)(((c)>='a'&&(c)<='z')||((c)>='A'&&(c)<='Z'))
voidEnc(constchar*str,char*out,intkey)
{
inti=0;
while(str[i])
{
if(isletter(str[i]))
{
out[i]=str[i]+key;
if(!isletter(out[i]))
out[i]-=26;
}
else
out[i]=str[i];
i++;
}
out[i]=0;
}
voidDenc(constchar*str,char*out,intkey)
{
inti=0;
while(str[i])
{
if(isletter(str[i]))
{
out[i]=str[i]-key;
if(!isletter(out[i]))
out[i]+=26;
}
else
out[i]=str[i];
i++;
}
out[i]=0;
}
intmain()
{
charout[100],out2[100];
Enc("",out,3);
printf("%s ",out);
Denc(out,out2,3);
printf("%s ",out2);
}
『貳』 關於C語言的凱撒加密
你需要添加路徑: ../file.txt;
因為你的exe文件在debug文件夾下,在該文件夾下沒有你輸入的哪個文件,程序中是只讀的形式打開文件的。所以,會提示存出錯。
兩種解決辦法:
第一個:將exe拷貝到加密文件的路徑下
第二個:將文件烤到exe文件路徑下。
根本的解決辦法就是: 給定文件的相對路徑或者絕對路徑,絕對不會出現問題的。
『叄』 C語言的凱撒密碼問題我想求教這個演算法是怎麼推出來的呢 加密演算法:(a[i]-a+k)%26-a
它的原理是字母與字母之間的替換。例如26個字母都向後移動K位。若K等於2,則A用C代替,B用D代替,以此類推
k是移動的位數,例如移動兩位,當前字母是c,那麼c-a=2,再加2,4%26=4(保證變換後的在26個字母的范圍內),然後a+4即為e
『肆』 凱撒密碼的演算法c語言的怎麼實現啊
凱撒密碼是一種非常古老的加密方法,相傳當年凱撒大地行軍打仗時為了保證自己的命令不被敵軍知道,就使用這種特殊的方法進行通信,以確保信息傳遞的安全。他的原理很簡單,說到底就是字母於字母之間的替換。下面讓我們看一個簡單的例子:「」用凱撒密碼法加密後字元串變為「edlgx」,它的原理是什麼呢?把「」中的每一個字母按字母表順序向後移3位,所得的結果就是剛才我們所看到的密文。
#include <stdio.h>
main()
{
char M[100];
char C[100];
int K=3,i;
printf("請輸入明文M(注意不要輸入空白串)\n");
gets(M);
for(i=0;M[i]!='\0';i++)
C[i]=(M[i]-'a'+K)%26+'a';
C[i]='\0';
printf("結果是:\n%s\n",C);
}
『伍』 C語言!凱撒演算法(只加密)的源代碼
凱撒密碼的原理是字母與字母之間的替換。例如26個字母都向後移動K位。若K等於2,則A用C代替,B用D代替,以此類推。
#include<stdio.h>
#include<conio.h>
intmain(){
intkey;
charmingma,mima;
printf(" Pleaseinputthecharacter:");
scanf("%c",&mingma);//輸入明碼
printf(" Pleaseinputthekey:");
scanf("%d",&key);//輸入秘鑰
if((mingma>='A')&&(mingma<='Z'))
mima='A'+(mingma-'A'+key)%26;//大寫字母移位
elseif((mingma>='a')&&(mingma<='z'))
mima='a'+(mingma-'a'+key)%26;//小寫字母移位
printf(" Theoutputis:%c",mima);//輸出密碼
printf(" Finished! ");
getch();
return0;
}
『陸』 C語言的凱撒加密
/*
和樓上的相比,或許 看上去很煩
ch[i] +=5;
if (ch[i] > 'Z')
{
ch[i] -= 26;
}
可以改成和 樓上的 方法
等價於 ch[i] = 'A' + (ch[i] - 'A' + 5) % 26;
*/
# include <stdio.h>
# include <stdlib.h> //用到了system(); 不寫 ,可以用 getchar();
#define strwidth 117 //定義長度
int main(void)
{
char ch[strwidth];
int i ;
printf("請輸入密碼:");
gets(ch); //輸入數據,用gets(); 保留了空格
for (i = 0; i < strwidth ;i++ )
{
if (ch[i] >= 'a' && ch[i] <= 'z' ) //判斷是否小寫字母
{
ch[i] +=5;
if (ch[i] > 'z') //不解釋,我想這樣,理解可能會方便點吧
{
ch[i] -= 26;
}
}
else if ( ch[i] >= 'A' && ch[i] <= 'Z') //判斷是否大寫字母
{
ch[i] +=5;
if (ch[i] > 'Z')
{
ch[i] -= 26;
}
}
}
printf("加密後為:%s\n" , ch); //輸出數據
system("pause");
return 0;
}
/*
或者 這樣
*/
# include <stdio.h>
# include <stdlib.h> //用到了system(); 不寫 ,可以用 getchar();
#define strwidth 117 //定義長度
int main(void)
{
char ch[strwidth];
int i ;
printf("請輸入密碼:");
gets(ch); //輸入數據,用gets(); 保留了空格
for (i = 0; i < strwidth ;i++ )
{
if (ch[i] >= 'a' && ch[i] <= 'z' || ch[i] >= 'A' && ch[i] <= 'Z' ) //判斷是否是字母
{
ch[i] +=5;
if ( ch[i]>'Z' && ch[i] <= 'Z' + 5 || ch[i] > 'z' )
{
ch[i] -= 26;
}
}
}
printf("加密後為:%s\n" , ch); //輸出數據
system("pause");
return 0;
}
『柒』 用C語言實現凱撒密碼加密解密,急!
忘了說解密了,解密過程完全可以使用上面的代碼,只要把key的值改成26-key就行了。比如,加密的密鑰是3,那麼解密密鑰就是23,這樣就可以使用同一段代碼。至於為什麼+23和-3的效果一樣,還請翻閱數論有關剩餘類環的知識。
『捌』 用c語言編寫凱撒加密演算法
#include<stdio.h>
#include<string.h>
#definePASSWORD3
intmain()
{
charc;
FILE*source=fopen("source.txt","r");//源解密時將該源文件換成加密後的文件
FILE*result=fopen("result.txt","w");//處理結果
while((c=fgetc(source))!=EOF)//加密
{
if(c>='a'&&c<='z')
c='a'+(c-'a'+PASSWORD)%26;
elseif(c>='A'&&c<='Z')
c='A'+(c-'A'+PASSWORD)%26;
fputc(c,result);
}
/*
while((c=fgetc(source))!=EOF)//解密解密時將加密部分注釋掉
{
if(c>='a'&&c<='z')
c='a'+(c-'a'+26-PASSWORD)%26;
elseif(c>='A'&&c<='Z')
c='A'+(c-'A'+26-PASSWORD)%26;
fputc(c,result);
}
*/
close(source);
close(result);
system("pause");
return0;
}
這是之前寫的,可以看看