密码学的做2个题目!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了密码学的做2个题目!相关的知识,希望对你有一定的参考价值。
1,找出E26种的所有可逆元及其逆元。
2.写出5种以上的古典密码体制!
CAESAR体制;双字的Playfair体制;维吉尼亚体制;Hill体制
具体:
1、CAESAR体制 CAESAR 体制是一种单表加性密码体制,其明文字母表、密文字母表和密钥字母表相同,比如英文字母表。加密步可由如下简单的式子表示:y=x+k,其中x∈X, y∈Y,k∈K。最简单的一种就是第一个明文字母由其右边的第三个字母代替,由D代替,B由E代替,…,Y,由B代替,Z由C代替。广义的CAESAR体制引入两个密钥参数,加密步变为y=k1x+k2,其中x∈X,y∈Y,k1,k2∈K。
2、双字的Playfair体制 1854 年,查尔斯.惠斯通(Charles Wheatstone)发明了一种特殊的双叶双码代替密码,他的朋友莱昂.普莱弗尔(Lyon Playfair)将其推荐给政府和军界的高层人士。这种体制的首次使用是在克里米亚战争期间,正式报道的使用是在Boer战争中,其名称也就以 Playfair命名。军队很看重它的一点就是此方法既不需要表也不需要器械,易作为战地密码。英国军队差不多用了一个世纪,而且保证它一直是保密的。然而在一次世界大战中的1915年,德国人将其破译了。
PLAYFAIR加密步按如下方式进行:由一个口令字开始,将一个Z25上的置换表(省去了Z26中的Z)排成5×5方阵。
P A L M E
R S T O N
B C D F G
H I K Q U
V W X Y Z
或
T O M R S
D F G B C
K Q U H I
X Y Z V W
L M E P A
加密步没有定义双字母是同一字母的情况,还有最后一个字母不成对的情况。上述两个例子的结果是相同的。如果一个双字母的两个字母在同一行(或一列),则它们就用其右边(相应地,底下)的字母所代替,比如:am→LE ,dl→KT。
另一种情况是,两个字母不在同一行或同一列,则第一个字母由同一行中且在第二个字母的那一列的字母代替;第二个字母则由同一行中,且是第一个字母所在那一列的字母所代替,比如:ag→EC ,ho→QR。
3、维吉尼亚体制
维吉尼亚体制是最古老而且最著名的多表密码体制之一,它以法国密码学家Blaise de Vigenere(1523--1596)命名。与CAESAR密码体制相似,其密钥是逐步变化的。一般是用维吉尼亚方阵来进行加密和解密的。每列都可以看成是一个CAESAR体制,其中密钥是0、1、2...25。加密时,将在方阵中查找明文字母所在的行及CAESAR体制密钥所在的列,来确定密文字符。通常CAESAR体制的密钥用密钥字来表示。比如,用KEYSTREAM来加密TWOPERSONS,首先在方阵中查找第T行第K列的字母,则得到T 对应的密文字母D,以此类推。解密时,则查找D在K列的行位置。通常密钥字要重复使用,特别是对较长的明文。
加密方阵作为多表体制的基础,它具有多样性,即可选择其它容易记忆的方阵。这里值得一提的就是Beaufort方阵,它的行是维吉尼亚方阵行的逆序。
4、Hill体制 在Hill 密码体制中,明文空间和密文空间是相同的,比如英文字母集。首先对字母集中的字母进行编号,比如A为0号,B为1号,Z为25号,后面所有的运算都要模 26。然后选择一个可逆的d维方阵M,其元素是介于0和25之间的整数。加密过程为MP=C,当然这里的P和C都是d维列向量。更确切地说,每个d元明文字符定义了列向量P,分量是d元明文字符的编号。计算得到的列向量C再被译为d元密文字符。
尽管希尔密码体制看起来几乎没有实用价值,但它对密码学的发展却产生了深刻的影响。希尔发明的重要性在于它无可辩驳地表明:数学方法在密码学中的地位是不容置疑的。随后在30年代,大批数学家投身于密码学研究。
尽管古典密码体制受到当时历史条件的限制,没有涉及到非常高深或者复杂的理论,但在其慢长的发展演化过程中,已经充分表现出了现代密码学的两大基本思想-代替和换位,而且还将数学的方法引入到密码分析和研究中。这为后来密码学成为系统的学科以及相关学科的发展奠定了坚实的基础,如计算机科学、复杂性理论等等。 参考技术A 古典密码:1、Hill体制 2、维吉尼亚体制 3、双字的Playfair体制 4、CAESAR体制 5、双字的Playfair体制 6.古典加密方法 7.代替密码 8多名码代替 9多音码代替 10换位密码 多表代替 密本 参考技术B 古典密码:1、Hill体制 2、维吉尼亚体制 3
实验吧题目之忘记密码
题目链接:忘记了密码 http://ctf5.shiyanbar.com/10/upload/
1、进入题目,首先查看源代码
得到有用信息,邮箱地址[email protected]和代码编写工具vim
2、这些线索肯定不够的,不如输入一个字符串测试一下
3、里面提到个step2.php的文件,我们访问一下这个文件内容
发现当我们在访问step2.php的时候,url自动跳转到原来的页面,我们想看看step2.php给的回应。
4、用BP抓包
这页源码是获取数据的一个表单,将获取的数据传递给submit.php,获取的内容是email和token。或许我们这里可以猜到email是我们先前在网页源码中的邮箱地址,但是我们不知道token的值应该是多少。
我们知道在http请求的时候,先将数据读取,应该就是step1.php界面,然后就是处理数据,而step2.php将get获取到的值转交到了submit.php,所以这个文件中指定有判断token值的方法。
5、我们先来访问一下submit.php。
提是不是管理员,但是线索应该就在这个文件中,但又没有权限访问。
我们知道这个文件使用vim编辑的,这里有一个特性,在编辑的过程中都会产生一个后缀为.swp的隐藏文件我们访问一下有没有这个文件
6、访问.swp的隐藏文件
果然存在,并显示出了处理数据的源代码
7、我们分析源代码,
Empty()函数判断一个变量是否被认为空值
Strlen()函数计算字符串的长度
Mysql_fetch_assoc()函数从结果集中取得一行作为关联数组
这串代码首先判断token的长度是不是等于10,并且token的值也必须等于0,否则都会输出错误,这也给了我们构造token的线索。
然后,通过sql count()语法指定列的数目,count(*)返回表中所有的记录数,如,有三条记录返回3,as num,将返回的值给一个新建的列名num。
我们从step2.php中得知需要传递两个参数,emailAddress和token,已经有了邮箱地址,只需要算出token就可以。
这里也给出了token的判断条件,值必须等于0,并且长度是10,常规是没有这样的数的,但是我们可以构造,十个零0000000000,这样不就长度是10啦。
最后构造出参数[email protected]&token=0000000000
8、将参数传递给submit.php便可得到flag
以上是关于密码学的做2个题目!的主要内容,如果未能解决你的问题,请参考以下文章