#include<string.h>
void main ()
{
char str[100]
char str1[100]
printf("输入歼睁字符串:")
scanf("档搭%s"行改拿,&str)
int len
len=strlen(str)
for(int i=0i<leni++)
{
str1[i]=(str[i]-97+3)%26+97
}
str1[len]='\0'
printf ("密文为:%s\n",str1)
}
如果你问的是电报码,那就还有中文电码,即用四个数字的组合代表汉字,一种无理码,差不多除了死记外无规律可循,现在基本不同了。其实,如果是电报码,有一种就够了,何必再去发明呢?
如果您问的是密码,介绍几种常见密码形式:
1、栅栏易位顷和法。
即把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。
举例:盗用阿洗一个例子^^
TEOGSDYUTAENNHLNETAMSHVAED
解:
将字母分截开排成两行,如下
T E O G S D Y U T A E N N
H L N E T A M S H V A E D
再将第二行字母分别放入第一行中,得到以下结果
THE LONGEST DAY MUST HAVE AN END.
2、恺撒移位密码。
也就是一种最简单的错位法,将字母表前移或者后错几位,例如:
明码表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密码表:DEFGHIJKLMNOPQRSTUVWXYZABC
这就形成了一个简单的密码表,如果我想写frzy(即明文),那么对照上面密码表编成密码也就是iucb(即密文)了。密码表可以自己选择移几位,移动的位数也就是密钥。
3、进制转换密码。
比如给你一堆数字,乍一看头晕晕的,你可以观察数字的规律,将其转换为10进制数字,然后雀消盯按照每个数字在字母表中的排列顺序,拼出正确字母。
举例:110 10010 11010 11001
解:
很明显,这些数字都是由1和0组成,那么你很快联想到什么?二进制数,是不是?嗯,那么就试着把这些数字转换成十进制试试,得到数字6 18 26 25,对应字母表,破解出明文为frzy,呵呵~
4、字母频率密码。
关于词频问题的密码,我在这里提供英文字母的出现频率给大家,其中数字全部是出现的百分比:
a 8.2 b 1.5 c 2.8 d 4.3
e 12.7 f 2.2 g 2.0 h 6.1
i 7.0 j 0.2 k 0.8 l 4.0
m 2.4 n 6.7 o 7.5 p 1.9
q 0.1 r 6.0 s 6.3 t 9.1
u 2.8 v 1.0 w 2.4 x 0.2
y 2.0 z 0.1
词频法其实就是计算各个字母在文章中的出现频率,然后大概猜测出明码表,最后验证自己的推算是否正确。这种方法由于要统计字母出现频率,需要花费时间较长,本人在此不举例和出题了,有兴趣的话,参考《跳舞的小人》和《金甲虫》。
5、维热纳尔方阵。
上面所说的频率分析,很容易破解较长篇幅的密文,于是维热纳尔继承前人的经验,创造出桥纤了这个维热纳尔方阵,从而克服了词频分析轻易能够破解密码的弊端,成为一种较为强大的密码编译形式。
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
1 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
2 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
3 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
4 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
5 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
6 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
7 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
8 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
9 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
10 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
11 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
12 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
13 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
14 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
15 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
16 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
17 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
18 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
19 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
20 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
21 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
22 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
23 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
24 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
25 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
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
以上就是维热纳尔方阵,它由明码表(第一行的字母)、密码表(下面26行)和密钥组成,下面我举个例子说明。
举例:
密钥:frzy
密码:qfuc
解:第一个字母,看以f开头第五行,对应明码表查找q字母所标示的字母为l。以此类推找出后面字母。所得明文为love。
一些新兴的密码形式:
1、利用键盘
无论是计算机键盘,还是手机键盘,都是出密码的好工具哦,可以用错位、或者排列形状等。使用手机键盘和这个同理。另外手机键盘还可以在键盘的字母上做文章,例如你可以用51表示字母j,用73表示字母r等。
举例:
r4a6
这个密码利用计算机键盘,将明文字母分别向上移动一个位置,得到密文。破解结果为frzy。
852 74123 74123698 74269 78974123456 7412369
这排数字是不是很晕?其实很简单,对照小键盘,依次打这些字母,看组成的形状就行了。答案是I L O V E U。
2、字母形状
本人曾经收到过这样一个密码短信,不幸被破解,导致发短信人被我非常严肃地奚落了一番^^!前面我不记得了,只记得后面是hep poo6。这个你可以从手机里打出来,然后把手机倒过来看,形成了密码的明文,good day~~~:)
20回答者: caibird1122 - 四级 2008-11-10 19:23
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)