密碼學
從李佳珊網誌摳來的
密碼學
挺有趣的 哈哈
來個最簡單的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;
}
留言
張貼留言