總體設計:
從鍵盤輸入一個字串(僅限於小寫英文字母),根據金鑰(使用者從鍵盤輸入,可在1-6範圍內)將對應字元進行移位操作即可加密,解密時移動相反。
如加密:設原文為abcdef,金鑰為5,則有abcdef每個字母按字母表向後移動5位(注:z後接a)可得到密文(亂碼)fghijkl。
如解密:檔案內容為fghijk1,金鑰為5,則有fghijk1每個字母向前移動5位(注a後接z),可得到原文abcdef。
除錯分析過程描述:
如輸入的字串為“hijklmnopq”
輸入1←則加密:
即會顯示“mnopqrstuv”
具體實現程式碼:
#include<stdio.h>
voidcode(char*p,intkey)
{
while(*p!="\0")
*p=97+(*p-97+key)%26;
p++;
}
voiduncode(char*p,intkey)
*p=97+(*p-71-key)%26;
main()
charstr[100];
intn,key;
printf("輸入密匙:");
scanf("%d",&key);
printf("輸入1加密,輸入2解密:");
scanf("%d",&n);
printf("輸入字串:");
scanf("%s",str);
if(n==1)
code(str,key);
printf("密文為%s\n",str);
elseif(n==2)
uncode(str,key);
printf("原文為%s\n",str);
總體設計:
從鍵盤輸入一個字串(僅限於小寫英文字母),根據金鑰(使用者從鍵盤輸入,可在1-6範圍內)將對應字元進行移位操作即可加密,解密時移動相反。
如加密:設原文為abcdef,金鑰為5,則有abcdef每個字母按字母表向後移動5位(注:z後接a)可得到密文(亂碼)fghijkl。
如解密:檔案內容為fghijk1,金鑰為5,則有fghijk1每個字母向前移動5位(注a後接z),可得到原文abcdef。
除錯分析過程描述:
如輸入的字串為“hijklmnopq”
輸入1←則加密:
即會顯示“mnopqrstuv”
具體實現程式碼:
#include<stdio.h>
voidcode(char*p,intkey)
{
while(*p!="\0")
{
*p=97+(*p-97+key)%26;
p++;
}
}
voiduncode(char*p,intkey)
{
while(*p!="\0")
{
*p=97+(*p-71-key)%26;
p++;
}
}
main()
{
charstr[100];
intn,key;
printf("輸入密匙:");
scanf("%d",&key);
printf("輸入1加密,輸入2解密:");
scanf("%d",&n);
printf("輸入字串:");
scanf("%s",str);
if(n==1)
{
code(str,key);
printf("密文為%s\n",str);
}
elseif(n==2)
{
uncode(str,key);
printf("原文為%s\n",str);
}
}