[課業] 密碼學作業
#include<iostream>
#include<fstream>
using namespace std;
char cipher(char key,char original)//轉換函式 參數key,明文字元
{
char transfer; //輸出用
int numkey; //暫存由ASCII轉換後的數字
numkey = key - 97; //小寫a的ASCII碼是97
if(original + numkey < 122) //這邊很重要!!由於ASCII碼只定義到127
{ //若是超過的不會被當作ASCII處理的樣子
//確切原因博元不知道
//不過大家可以試試看先把他加到超過127
//在減回來,應該是轉不回來
transfer = original + numkey;//密文=原文+key的ASCII碼-97
//不懂為啥的去翻課本
}
else
{
transfer = original - 26 + numkey; //如果加到超過z則-26回頭
}
return transfer; //回傳密文
}
int main()
{
string source,secret,key; //定義來源,密文,金鑰
int counter,n; //counter用在剛開始輸入的key,n用在迴圈
cout<<"請輸入明文\n";
cin>>source; //輸入明文
cout<<"請輸入金鑰\n";
cin>>key; //輸入金鑰
counter = 0;
for(n=0;n<source.length();n++)
{
if(counter<key.length()) //分開處理第一個輸入的金鑰
{
secret[n] = cipher(key[counter],source[n]);
counter++;
}
else //之後用autokey處理
{
secret[n] = cipher(source[n]- counter,source[n]);
}
}
n=0;
cout<<"輸出密文\n";
while(true)
{
if(secret[n] == NULL) //輸出
{
break;
}
cout<<secret[n];
n++;
}
system("pause");
return 0;
}
意外發現,程式都不會寫了!弄個簡單的東西都弄不出來。其實我覺得是308風水不好= =
在實驗室就可以打出來。囧~~~
輸出的部分不知道為啥直接cout出不去,要用迴圈丟......讀入檔案跟輸出檔案還沒寫
晚點再弄。上面的程式碼肯定很爛,我只有用直覺下去寫,大家應該有很多地方可以改
可以用得更精簡。以上~~博元只有想法= = 博元語法不強。ㄆㄆ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.127.0.254
推
03/28 17:44, , 1F
03/28 17:44, 1F
※ 編輯: lobaka 來自: 120.127.0.254 (03/28 17:47)
推
03/28 23:45, , 2F
03/28 23:45, 2F
推
03/29 10:30, , 3F
03/29 10:30, 3F
推
03/29 10:33, , 4F
03/29 10:33, 4F
推
03/29 11:16, , 5F
03/29 11:16, 5F
→
03/29 23:08, , 6F
03/29 23:08, 6F
→
03/30 01:46, , 7F
03/30 01:46, 7F
→
03/30 11:09, , 8F
03/30 11:09, 8F
→
03/30 11:09, , 9F
03/30 11:09, 9F
討論串 (同標題文章)