① ftxsos用維吉尼亞加密法是什麼
摘要 維吉尼亞加密法
② 學過維吉尼亞加密法的,可以解密一下。密文,zprmibfy,秘鑰,red。解密出來··謝謝了!
qtudmewc 是不是不規則的啊 要是解密出來是規則的英語單詞的話無視我
③ 使用維吉尼亞密碼,使用密鑰串「test」將文明hello+world轉換為密文
摘要 將明文分成若干個分組,每個分組為m個字母長度(即密鑰字的長度);
④ 尋求:維吉尼亞密碼自動加密器。
需要使用CP Pascal Editor v3.7打開
順便說明一下,這是我在做科技創新大賽的作品的一部分,請注意使用。
Program vigenere;
var
ans:array[0..101]of char;
c:char;s:string;
i,n,tot,len,j:longint;
begin
j:=0;tot:=0;
writeln('請輸入密鑰:');
readln(s);
len:=length(s);
writeln('請輸入明文:');
while not eoln do
begin
read(c);
inc(j);
inc(tot);
if j>len then j:=1;
n:=ord(s[j])-96-1;
if ord(c)>122-n then
ans[tot]:=chr(ord(c)-26+n)
else ans[tot]:=chr(ord(c)+n);
end;
writeln('密文是:');
for i:=1 to tot do write(ans[i]);
readln;
readln
end.
解密程序:
var
ans:array[0..101]of char;
c:char;s:string;
i,n,tot,len,j:longint;
begin
j:=0;tot:=0;
writeln('請輸入密鑰:');
readln(s);
len:=length(s);
writeln('請輸入密文:');
while not eoln do
begin
read(c);
inc(j);
inc(tot);
if j>len then j:=1;
n:=ord(s[j])-96-1;
if ord(c)>ord('a')+n-1 then
ans[tot]:=chr(ord(c)-n)
else ans[tot]:=chr(ord(c)+26-n);
end;
writeln('明文是:');
for i:=1 to tot do write(ans[i]);
readln;
readln
end.
⑤ 維吉尼亞密碼該 怎麼用
人們在單一愷撒密碼的基礎上擴展出多表密碼,稱為「維吉尼亞」密碼。它是由16世紀法國亨利三世王朝的布萊瑟·維吉尼亞發明的,其特點是將26個愷撒密表合成一個,見下表:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
維吉尼亞密碼引入了「密鑰」的概念,即根據密鑰來決定用哪一行的密表來進行替換,以此來對抗字頻統計。假如以上面第一行代表明文字母,左面第一列代表密鑰字母,對如下明文加密:
TO BE OR NOT TO BE THAT IS THE QUESTION
當選定RELATIONS作為密鑰時,加密過程是:明文一個字母為T,第一個密鑰字母為R,因此可以找到在R行中代替T的為K,依此類推,得出對應關系如下:
密鑰:RELAT IONSR ELATI ONSRE LATIO NSREL
明文:TOBEO RNOTT OBETH ATIST HEQUE STION
密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY
⑥ 維吉尼亞加密演算法如何加密任意格式的文件
維吉尼亞演算法如果僅僅作用於字元集在A到Z a到z,0到9這樣的范圍,就叫對「英文文本」實施加密
這個英文文本的范圍,A到Z等於位元組值65到90, a到z等於位元組值97到122,0到9等於位元組值48到57。中間是斷續的幾個區間
演算法如果改動一下,把字元集擴大到0到255,相當於對256個字母重新編排密碼本,而不局限於英文文本的26個字母。這樣就能對一個位元組的所有情況進行加密。能對位元組加密,所有的文件都以位元組為基本存儲單位,也就實現了對任何文件、任何數據的加密。
如果之前英文文本的處理是自己寫的,稍加改動就能變成處理256個字母。
⑦ 關於維吉尼亞密碼的一個問題
你所說的「這個維吉尼亞密碼」指的是哪個維吉尼亞密碼?
好吧,我知道了,是網路的(答你這題還得有點聯想能力……)
「TO BE OR NOT TO BE THAT IS THE QUESTION
當選定RELATIONS作為密鑰時,加密過程是:明文一個字母為T,第一個密鑰字母為R」
額,上面不是說了嗎用"RELATIONS"作為密鑰那麼明文第一個字母T對應的密鑰就是R。你要想問"RELATIONS"這個密鑰砸來的?我告訴你,想來的,這個密鑰你想用啥單詞就用啥單詞,越生僻的單詞越好,選完密鑰後加密,但密鑰長度不夠,那麼就重復使用,如下:
密鑰:RELAT IONSR ELATI ONSRE LATIO NSREL
明文:TOBEO RNOTT OBETH ATIST HEQUE STION
密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY
給你個維吉尼亞密碼加密解密用的程序,使用後就能更好理解:
http://hi..com/%B7%E7%F3%DD%B5%C4%CC%EC%BF%D5%C0%B6%D2%AB/blog/item/0f65c019326c000d35fa41f0.html
(別告訴我這是個只上一次的小號……我的採納率被這種號害慘了……)
⑧ 維吉尼亞密碼的加密方法
維吉尼亞密碼引入了「密鑰」的概念,即根據密鑰來決定用哪一行的密表來進行替換,以此來對抗字頻統計。假如以上面第一行代表明文字母,左面第一列代表密鑰字母,對如下明文加密:
TO BE OR NOT TO BE THAT IS THE QUESTION
當選定RELATIONS作為密鑰時,加密過程是:明文一個字母為T,第一個密鑰字母為R,因此可以找到在R行中代替T的為K,依此類推,得出對應關系如下:
密鑰:RELAT IONSR ELATI ONSRE LATIO NSREL
明文:TOBEO RNOTT OBETH ATIST HEQUE STION
密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY
歷史上以維吉尼亞密表為基礎又演變出很多種加密方法,其基本元素無非是密表與密鑰,並一直沿用到二戰以後的初級電子密碼機上。
公元16世紀晚期,想要獲得更高的保密度的人獲得了一種設計更加精細的密碼表。
⑨ 數據文件的維吉尼亞加密程序
#include
#include
void menu()/*菜單*/
{
clrscr();
printf("\n===============================================================================");
printf("\n1.Encrypt the file");
printf("\n2.Decrypt the file");
printf("\n3.Quit\n");
printf("===============================================================================\n");
printf("Please select a item:");
return;
}
char encrypt(char ch1,char ch2)/*加密程序*/
{
if(ch1>='A'&&ch1<='Z'&&ch2>='A'&&ch2<='Z')
{
return 'A'+(ch1-'A'+ch2-'A')%26;
}
if(ch1>='a'&&ch1<='z'&&ch2>='a'&&ch2<='z')
{
return 'a'+(ch1-'a'+ch2-'a')%26;
}
return ch1;
}
char decrypt(char ch1,char ch2)/*解密程序*/
{
if(ch1>='A'&&ch1<='Z'&&ch2>='A'&&ch2<='Z')
{
return 'A'+(ch1-'A'+26-(ch2-'A'))%26;
}
if(ch1>='a'&&ch1<='z'&&ch2>='a'&&ch2<='z')
{
return 'a'+(ch1-'a'+26-(ch2-'a'))%26;
}
return ch1;
}
main()
{
int i;
char key[50];
char ch;
FILE *in,*out;
char infile[20],outfile[20];
textbackground(BLACK);
textcolor(LIGHTGREEN);
clrscr();
clrscr();
sleep(3);
menu();
ch=getch();
while(ch!='3')
{
if(ch=='1')
{
clrscr();
printf("\nPlease input the infile:");
scanf("%s",infile);/*輸入需要加密的文件名*/
if((in=fopen(infile,"r"))==NULL)
{
printf("Can not open the infile!\n");
printf("Press any key to exit!\n");
getch();
exit(0);
}
printf("Please input the key:");
scanf("%s",key);/*輸入加密密碼*/
printf("Please input the outfile:");
scanf("%s",outfile);/*輸入加密後文件的文件名*/
if((out=fopen(outfile,"w"))==NULL)
{
printf("Can not open the outfile!\n");
printf("Press any key to exit!\n");
fclose(in);
getch();
exit(0);
}
i=0;
while(!feof(in))
{
fputc(encrypt(fgetc(in),key[i%strlen(key)]),out);
i++;
}
fclose(in);
fclose(out);
printf("\nEncrypt successful!\n");
sleep(1);
}
if(ch=='2')
{
clrscr();
printf("\nPlease input the infile:");
scanf("%s",infile);/*輸入需要解密的文件名*/
if((in=fopen(infile,"r"))==NULL)
{
printf("Can not open the infile!\n");
printf("Press any key to exit!\n");
getch();
exit(0);
}
printf("Please input the key:");
scanf("%s",key);/*輸入解密密碼*/
printf("Please input the outfile:");
scanf("%s",outfile);/*輸入解密後文件的文件名*/
if((out=fopen(outfile,"w"))==NULL)
{
printf("Can not open the outfile!\n");
printf("Press any key to exit!\n");
fclose(in);
getch();
exit(0);
}
i=0;
while(!feof(in))
{
fputc(decrypt(fgetc(in),key[i%strlen(key)]),out);
i++;
}
fclose(in);
fclose(out);
printf("\nDecrypt successful!\n");
sleep(1);
}
menu();
ch=getch();
}
clrscr();
logo();
printf("\nGood Bye!\n");
sleep(3);