凯撒密码 C语言

凯撒密码 C语言,第1张

#include<stdio.h>

#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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12430296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存