C語(yǔ)言字符串加密和解密算法
在本實(shí)例中要求設(shè)計(jì)一個(gè)加密和解密算法。在對(duì)一個(gè)指定的字符串加密之后,利用解密函數(shù)能夠?qū)γ芪慕饷,顯示明文信息。加密的方式是將字符串中每個(gè)字符加上它在字符串中的位置和一個(gè)偏移值 5。以字符串“mrsoft”為例,第一個(gè)字符“m”在字符串中的位置為 0,那么它對(duì)應(yīng)的密文是“'m'+0+5",即 r。
算法思想
在 main() 函數(shù)中使用 while 語(yǔ)句設(shè)計(jì)一個(gè)無(wú)限循環(huán),并定義兩個(gè)字符數(shù)組,用來(lái)保存,明文和密文字符串,在首次循環(huán)中要求用戶輸入字符串,進(jìn)行將明文加密成密文的操作, 之后的操作則是根據(jù)用戶輸入的命令字符進(jìn)行判斷,輸入 1 加密新的明文,輸入 2 對(duì)剛加密的密文進(jìn)行解密,輸入 3 退出系統(tǒng)。
程序代碼
#include <stdio.h>
#include <string.h>
int main()
{
int result=1;
int i;
int count=0;
char Text[128]={'\0'};
char cryptograph[128]={'\0'};
while(1)
{
if(result==1)
{
printf("請(qǐng)輸入要加密的明文:\n");
scanf ("%s",&Text);
count=strlen(Text);
for(i=0;i<count;i++)
{
cryptograph[i]=Text[i]+i+5;
}
cryptograph[i]='\0';
printf("加密后的密文是:%s\n",cryptograph);
}
else if(result==2)
{
count=strlen(Text);
for(i=0;i<count;i++)
{
Text[i]=cryptograph[i]-i-5;
}
Text[i]='\0';
printf("解密后的明文是:%s\n",Text);
}
else if(result==3)
{
break;
}
else
{
printf("請(qǐng)輸入正確的命令符:\n");
}
printf("輸入1加密新的明文,輸入2對(duì)剛加密的密文進(jìn)行解密,輸入3退出系統(tǒng):\n");
printf("請(qǐng)輸入命令符:\n");
scanf("%d",&result);
}
return 0;
}
調(diào)試運(yùn)行結(jié)果
本實(shí)例中,輸入了 I love Xichang College 字符串作為例證,因此輸出是多個(gè)加密后的字符串,結(jié)果如下所示:
請(qǐng)輸入要加密的明文:
I Love Xichang College
加密后的密文是:N
輸入1加密新的明文,輸入2對(duì)剛加密的密文進(jìn)行解密,輸入3退出系統(tǒng):
請(qǐng)輸入命令符:
請(qǐng)輸入要加密的明文:
加密后的密文是:Qu}m
輸入1加密新的明文,輸入2對(duì)剛加密的密文進(jìn)行解密,輸入3退出系統(tǒng):
請(qǐng)輸入命令符:
請(qǐng)輸入要加密的明文:
加密后的密文是:]ojpjxr
輸入1加密新的明文,輸入2對(duì)剛加密的密文進(jìn)行解密,輸入3退出系統(tǒng):
請(qǐng)輸入命令符:
請(qǐng)輸入要加密的明文:
加密后的密文是:Hustnqp
輸入1加密新的明文,輸入2對(duì)剛加密的密文進(jìn)行解密,輸入3退出系統(tǒng):
請(qǐng)輸入命令符:
總結(jié)
字符串的加密和解密方法一直被廣泛應(yīng)用,最常見(jiàn)的無(wú)非是 MD5 散列函數(shù)。本實(shí)例中的算法比較簡(jiǎn)單,只是在原值基礎(chǔ)上相加對(duì)應(yīng)值即可。MD5 略微復(fù)雜,是為了確保信息傳輸完整、一致而設(shè)計(jì)的雜湊算法之一,是雜湊算法的基本原理。
作者:大學(xué)生新聞網(wǎng) 來(lái)源:大學(xué)生新聞網(wǎng)
發(fā)布時(shí)間:2025-03-09 閱讀:
- C語(yǔ)言輸出等腰三角形
- 本實(shí)例要求從鍵盤輸入任意整數(shù) n,通過(guò)程序運(yùn)行輸出對(duì)應(yīng)高度為 n 的等腰三角形。
- 03-10 關(guān)注:0
- C語(yǔ)言字符串加密和解密算法
- 在本實(shí)例中要求設(shè)計(jì)一個(gè)加密和解密算法。在對(duì)一個(gè)指定的字符串加密之后,利用解密函數(shù)能夠?qū)γ芪慕饷埽@示明文信息。
- 03-09 關(guān)注:3
- C語(yǔ)言獲取矩陣的最大值及其下標(biāo)
- 本實(shí)例要求使用二維數(shù)組將一個(gè) 3×4 的矩陣中所有元素的最大值及其下標(biāo)獲取,通過(guò)該程序,掌握二維數(shù)組的引用知識(shí)。
- 03-09 關(guān)注:4
- C語(yǔ)言誰(shuí)家孩子跑得最慢
- 張、王、李三家各有三個(gè)小孩。一天,三家的九個(gè)孩子在一起比賽短跑,規(guī)定不分年齡大小,跑第一得 9 分,跑第二得 8 分,依次類推。
- 03-09 關(guān)注:3
- C語(yǔ)言狼追兔子問(wèn)題
- 一只兔子躲進(jìn)了 10 個(gè)環(huán)形分布的洞的某一個(gè),狼在第一個(gè)洞沒(méi)有找到兔子,就隔一個(gè)洞,到第三個(gè)洞去找
- 03-09 關(guān)注:2
- C語(yǔ)言兔子生兔子問(wèn)題
- 假設(shè)一對(duì)兔子的成熟期是一個(gè)月,即一個(gè)月可長(zhǎng)成成兔,那么,如果每對(duì)成兔每個(gè)月都生一對(duì)小兔
- 03-09 關(guān)注:4