普莱费尔密码在线解密(普莱费尔密码破译)

2023-02-06 23:06:02 密语知识 思思

一种playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重复,且都为小写字母)

#includestdio.h

#includestring.h

int find(char *key,int n,char c);

char alph[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'};

void find_fang(char fang[5][5],char c1,int *i_1,int *j_1);

void main()

{

char key[25],yuanwen[50],miwen[50];

printf("\n请输入密钥(1~25):");

gets(key);

printf("\n请输入原文(1~50):");

gets(yuanwen);

char fang[5][5];

int i,j,k=0,len,t=0;

len=strlen(key);

for(i=0;i5;i++)

for(j=0;j5;j++)

{

if(key[k]!='\0')

{

fang[i][j]=key[k];

k++;

}

else

{

while(find(key,len,alph[t]))

t++;

fang[i][j]=alph[t];

t++;

}

}

char t1,t2;

int i_1=-1,j_1=-1,i_2=-1,j_2=-1;

for(i=0;istrlen(yuanwen);i+=2)

{

t1=yuanwen[i];

t2=yuanwen[i+1];

if(t1==t2||t2=='\0')

{

miwen[i]=t1;

miwen[i+1]=t2;

}

else

{

find_fang(fang,t1,i_1,j_1);

find_fang(fang,t2,i_2,j_2);

if(i_1==-1||j_1==-1||i_2==-1||j_2==-1)

{

miwen[i]=t1;

miwen[i+1]=t2;

}

else if(i_1==i_2||j_1==j_2)

{

miwen[i]=t2;

miwen[i+1]=t1;

}

else

{

miwen[i]=fang[i_1][j_2];

miwen[i+1]=fang[i_2][j_1];

}

}

}

printf("加密后的密文为:");

puts(miwen);

}

int find(char *key,int n,char c)

{

int i,flag=0;

for(i=0;in;i++)

if(key[i]==c)

{

flag=1;

break;

}

return flag;

}

void find_fang(char fang[5][5],char c1,int *i_1,int *j_1)

{

int i,j;

for(i=0;i5;i++)

for(j=0;j5;j++)

if(fang[i][j]==c1)

{

*i_1=i;

*j_1=j;

break;

}

}

普莱费尔密码在线解密(普莱费尔密码破译) 第1张

描述playfair密码的加密过程

playfair密码

算法描述:Playfair密码出现于1854年,它依据一个5*5的正方形组成的密码表来编写,密码表里排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待。英语中z使用最少,可以去掉它。

加密描述:第一步是编制密码表。在这个5*5的密码表中,共有5行5列字母。第一列(或第一行)是密钥,其余按照字母顺序。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。当然也要把使用频率最少的字母去掉。如:密钥是Live and learn,去掉后则为liveandr。如果密钥过长可占用第二列或行。

怎么用Passware 破解压缩文件密码

别浪费时间了,这种软件也没什么特别的,无外乎词典破解、暴力破解,CPU不够强悍的话,你要等到天荒地老,还不如直接去你下载的压缩文件的网页上找,作者一般会把密码放出来的。