當前位置:首頁 » 編程語言 » c語言凱撒加密解密

c語言凱撒加密解密

發布時間: 2022-11-01 22:43:02

㈠ 關於凱撒密碼的問題C++(要答案)

摘要 #include

㈡ 如何用C語言實現加強版的凱撒密碼破解!

供參考 解碼只需要一句即可

感興趣自己分析下

#include<stdio.h>
intmain()
{
chars[100];
intk;
inti;
while(~scanf("%s%d",s,&k))
{
k%=26;
for(i=0;s[i];i++)
s[i]=(s[i]-'A'+26-(k+i+1)%26)%26+'A';
printf("%s ",s);
}
return0;
}

㈢ 請問一下這道C語言編程題怎麼做

按照題目要求編寫的用凱撒密碼加密的C語言程序如下

#include<stdio.h>

int main(){

char s[80];

int offset,i;

fgets(s,80,stdin);

scanf("%d",&offset);

for(i=0;s[i]!='';i++){

if('A'<=s[i] && s[i]<='Z')

if(offset>=0)

s[i]='A'+(s[i]-'A'+offset)%26;

else

s[i]='A'+(s[i]-'A'+26+offset%26)%26;

else if('a'<=s[i] && s[i]<='z')

if(offset>=0)

s[i]='a'+(s[i]-'a'+offset)%26;

else

s[i]='a'+(s[i]-'a'+26+offset%26)%26;

}

printf("%s ", s);

return 0;

}

㈣ C++編程 凱撒加密

#include<iostream>
#include<string>
usingnamespacestd;
voidencrypt(string&s)//加密
{

inti=s.length();
for(intj=0;j<i;++j)
{
if('A'<=s[j]&&s[j]<='Z')
{
if('A'<=s[j]&&s[j]<='W')
s[j]+=3;
else
s[j]-=23;
//cout<<s[j];
s[j]+=32;
//cout<<s[j]<<endl;
}
elseif('a'<=s[j]&&s[j]<='z')
{
if('a'<=s[j]&&s[j]<='w')
s[j]+=3;
else
s[j]-=23;
//cout<<s[j];
s[j]-=32;
//cout<<s[j]<<endl;

}

}
}

intmain()//測試
{
stringxy;
cout<<"輸入字元串"<<endl;
cin>>xy;
encrypt(xy);
cout<<xy<<endl;
return0;

}

聽說回答的夠長才能夠自動採納

㈤ C語言凱撒加密是一種移位替代加密演算法,即將字母表A-Z向左移位,然後用移位後的字母表替原來的明文得到密文

#include<iostream>
#include<string>

usingnamespacestd;

intmain()
{
stringcode;//儲存初始字元串
stringd_code;//加密後的字元串
inti;
intn;//移位的個數
cout<<"Enterthestring"<<endl;
cin>>code;
cout<<"howmanystepdoyouwanttomove?"<<endl;
cin>>n;
for(i=0;i<code.size();++i)
{
if(int(code[i])>97)
{
if(int(code[i])+n>122)
d_code[i]=int(code[i])+n-26;
else
d_code[i]=int(code[i])+n;
}
elseif(int(code[i])+n>90)
d_code[i]=char(int(code[i])+n-26);
else
d_code[i]=char(int(code[i]+n));
}
for(i=0;i<code.size();++i)
{
cout<<d_code[i];
}
cout<<endl;
cout<<"Code="<<code<<endl;
return0;
}

㈥ 用C語言實現任意字元串的加密,其中,字母用凱撒加密方法加密,非字母不變

我盡量用注釋闡述了思路,希望可以幫到你!!

#include<stdio.h>
#include<string.h>
#define N 80 //可加密字元串最大長度

char plaintext[N]={0}; //明文,輸入時輸入字元,參與運算時強制轉換成整數
int ciphertext[N]={0}; //密文,保存成整數,輸出時強制轉換成字元
int k; //後(右)移位數,相當於密鑰

void getPlainText() //獲得明文字元串
{
printf("請輸入明文:");
scanf("%s",plaintext);
printf("\n");
}

void getLength() //獲取後(右)移位數(密鑰)
{
printf("請輸入後移的位數:");
scanf("%d",&k);
k%=26; //因為字母只有26個,所以超過26相當於重復
}

void Caesar_cipher() //凱撒加密,本程序採用的是字母循環後(右)移
{
unsigned int i;

for(i=0;i<strlen(plaintext);i++)
{
//兩個bool類型的變數是為了判斷字元是否是字母(包括大寫和小寫)
bool flag1=plaintext[i]>='a'&&plaintext[i]<='z';
bool flag2=plaintext[i]>='A'&&plaintext[i]<='Z';

if(flag1||flag2){ //如果是字母,加密
ciphertext[i]=(int)plaintext[i]+k; //字母在字母表中後(右)移K位
if(ciphertext[i]>(int)'z'){ //保證是循環後(右)移
ciphertext[i]-=26;
}
}
else //非字母字元,不做處理,原樣保存
ciphertext[i]=(int)plaintext[i];

}

}

void printCipherText() //輸出加密後的密文
{
unsigned int i;
printf("\n加密後的密文是:");
for(i=0;i<strlen(plaintext);i++) //把參與計算後是整數強制轉換成對應的字元
printf("%c",(char)ciphertext[i]);
printf("\n");

}

void main()
{
getPlainText(); //明文
getLength(); //後(右)移位數
Caesar_cipher(); //凱撒加密
printCipherText(); //密文

}

㈦ 凱撒密碼 C語言

#include<stdio.h>
#include<string.h>
void main ()
{
char str[100];
char str1[100];
printf("輸入字元串:");
scanf("%s",&str);
int len;
len=strlen(str);
for(int i=0;i<len;i++)
{
str1[i]=(str[i]-97+3)%26+97;
}
str1[len]='\0';
printf ("密文為:%s\n",str1);
}

熱點內容
輸入虛擬手機伺服器地址怎麼填 發布:2025-01-09 18:58:50 瀏覽:348
dede換資料庫 發布:2025-01-09 18:53:23 瀏覽:262
sql2000資料庫置疑修復 發布:2025-01-09 18:35:54 瀏覽:411
塊設備塊緩存 發布:2025-01-09 18:35:46 瀏覽:484
HED編譯 發布:2025-01-09 18:20:26 瀏覽:408
從安卓轉移設備從哪裡呢 發布:2025-01-09 18:12:31 瀏覽:556
為什麼半夜伺服器會炸 發布:2025-01-09 18:06:32 瀏覽:320
編譯器處理數據類型 發布:2025-01-09 18:06:29 瀏覽:946
狐狸視頻源碼 發布:2025-01-09 17:56:27 瀏覽:443
javaif或條件 發布:2025-01-09 17:51:22 瀏覽:296