密碼學

從李佳珊網誌摳來的


密碼學

挺有趣的 哈哈


來個最簡單的vigenere加密法教學
很簡單啦
一般範例都是給明文要你加密

但是我給密文讓大家破解
第一個解出來的有小禮物
雖然還不知道要送啥

小教學:假設我要加密NIJI這個單字
key是:sky

就以key的字母為序列第一個單字把26個字母循環排完
產生三個序列:

STUVWXYZABCDEFGHIJKLMNOPQR
KLMNOPQRSTUVWXYZABCDEFGHIJ
YZABCDEFGHIJKLMNOPQRSTUVWX

因為英文字排版的關係 每個字都不一樣大
所以大家可以用手寫對對看喔
然後以sky循環對上NIJI:

NIJI
skys

最後把原本相對位置找出來就對了

ABCDEFGHIJKLMNOPQRSTUVWXYZ

STUVWXYZABCDEFGHIJKLMNOPQR
KLMNOPQRSTUVWXYZABCDEFGHIJ
YZABCDEFGHIJKLMNOPQRSTUVWX

N:對上s那行的f
I:對上K那行的S
J:對上y那行的h
I:對上s那行的a

因為英文字排版的關係 每個字都不一樣大
所以大家可以用手寫對對看喔

所以加密後就是:fsha

出題囉------------------------------

key:fuck
密文:NBCDJSQE
明文是???

文章分類: 未分類文章
Niji6666 at 無名小站 於 04:52 PM 發表

手癢寫的一隻程式

#include<stdio.h>
#include<string.h>
#define MAX 100
int main(int argc, char**argv)
{
char mesg[MAX]={};
int lenth=0;
int i=0;
int key=0;
key = strlen(argv[2]);
lenth = strlen(argv[1]);

for(i=0;i<lenth;i++)
{
if( (argv[1][i]-argv[2][i%key]) >= 0)
mesg[i] = 'a'+(argv[1][i]-argv[2][i% key]);
else
mesg[i] = 'a'+('z'-argv[2][i%key])+(argv[1][i]-'a')+1;
}
mesg[i]='\0';
printf("%s\n",mesg);
return 0;
}

留言

這個網誌中的熱門文章

電腦網路project