密码学课程报告笔记

合集下载

密码学技术读书笔记

密码学技术读书笔记

关于密码学技术读书笔记一.密码学的介绍密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。

在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。

著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯数学的异同。

密码学是信息安全等相关议题,如认证、访问控制的核心。

密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存在。

密码学也促进了计算机科学,特别是在于电脑与网络安全所使用的技术,如访问控制与信息的机密性。

密码学已被应用在日常生活:包括自动柜员机的芯片卡、电脑使用者存取密码、电子商务等等。

密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。

依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。

密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。

二.密码学的发展历史密码学的发展历程大致经历了三个阶段:古代加密方法、古典密码和近代密码。

1.古代加密方法(手工阶段)古代加密方法大约起源于公元前440年出现在古希腊战争中的隐写术。

当时为了安全传送军事情报,奴隶主剃光奴隶的头发,将情报写在奴隶的光头上,待头发长长后将奴隶送到另一个部落,再次剃光头发,原有的信息复现出来,从而实现这两个部落之间的秘密通信。

公元前400年,斯巴达人就发明了“塞塔式密码”,即把长条纸螺旋形地斜绕在一个多棱棒上,将文字沿棒的水平方向从左到右书写,写一个字旋转一下,写完一行再另起一行从左到右写,直到写完。

解下来后,纸条上的文字消息杂乱无章、无法理解,这就是密文,但将它绕在另一个同等尺寸的棒子上后,就能看到原始的消息。

这是最早的密码技术。

我国古代也早有以藏头诗、藏尾诗、漏格诗及绘画等形式,将要表达的真正意思或“密语”隐藏在诗文或画卷中特定位置的记载。

密码学实验报告(AES,RSA)

密码学实验报告(AES,RSA)

华北电力大学实验报告||实验名称现代密码学课程设计课程名称现代密码学||专业班级:学生姓名:学号:成绩:指导教师:实验日期:[综合实验一] AES-128加密算法实现 一、实验目的及要求(1)用C++实现;(2)具有16字节的加密演示;(3)完成4种工作模式下的文件加密与解密:ECB, CBC, CFB,OFB.二、所用仪器、设备计算机、Visual C++软件。

三. 实验原理3.1、设计综述AES 中的操作均是以字节作为基础的,用到的变量也都是以字节为基础。

State 可以用4×4的矩阵表示。

AES 算法结构对加密和解密的操作,算法由轮密钥开始,并用Nr 表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表2所示)。

AES 算法的主循环State 矩阵执行1 r N 轮迭代运算,每轮都包括所有 4个阶段的代换,分别是在规范中被称为 SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换) 和AddRoundKey ,(由于外部输入的加密密钥K 长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥 K 扩展成更长的比特串,以生成各轮的加密和解密密钥。

最后执行只包括 3个阶段 (省略 MixColumns 变换)的最后一轮运算。

表2 AES 参数比特。

3.2、字节代替(SubBytes )AES 定义了一个S 盒,State 中每个字节按照如下方式映射为一个新的字节:把该字节的高4位作为行值,低4位作为列值,然后取出S 盒中对应行和列的元素作为输出。

例如,十六进制数{84}。

对应S 盒的行是8列是4,S 盒中该位置对应的值是{5F}。

S 盒是一个由16x16字节组成的矩阵,包含了8位值所能表达的256种可能的变换。

S 盒按照以下方式构造:(1) 逐行按照升序排列的字节值初始化S 盒。

第一行是{00},{01},{02},…,{OF};第二行是{10},{l1},…,{1F}等。

密码学笔记(5)——Rabin密码体制和语义安全性

密码学笔记(5)——Rabin密码体制和语义安全性

密码学笔记(5)——Rabin密码体制和语义安全性⼀、Rabin密码体制 Rabin密码体制是RSA密码体制的⼀种,假定模数n=pq不能被分解,该类体制对于选择明⽂攻击是计算安全的。

因此,Rabin密码体制提供了⼀个可证明安全的密码体制的例⼦:假定分解整数问题是整数上不可⾏的,那么Rabin密码体制是安全的。

Thm1 (Rabin密码体制)设n=pq,其中p和q是素数,且p,q \equiv 3 (mod \, 4),设P=C=Z^{\star}_{n},且定义\kappa =\{(n,p,q)\}对K=(n,p,q),定义e_{K}(x)=x^{2} (mod \, n)和d_{K}=\sqrt{y} (mod \, n)n为公钥,p和q为私钥。

注:条件p,q \equiv 3 (mod \, 4)可以省去,条件P=C=Z^n_{\star}也可以弱化为P=C=Z^n,只是在使⽤更多的限制性描述的时候,简化了许多⽅⾯的计算和密码体制分析。

注意看到这个函数y=x^{2}对于加密来说不是⼀个单射,所以解密不能以⼀种明显的⽅式完成,特别的,对于y \equiv x^{2} (mod \, n),对于某⼀个x \in Z^{\star}_{n},存在y模n的是个解,除⾮有其他的冗余信息,否则⽆法确认是那⼀个值。

从Bob的观点来看解密问题,它有⼀个密⽂y,要想得到x使得x^2 \equiv y(mod \, n)这是⼀个关于Z_{n}中未知元x的⼆次⽅程,解密需要求出模n的平⽅根,等价于求解以下两个同余⽅程。

z^{2} \equiv y (mod \, p)z^{2} \equiv y (mod \, q)虽然我们可以利⽤Euler准则来判断y是否为⼀个模p或模q的⼆次剩余。

事实上,如果加密正确的执⾏,y是⼀个模p和模q的⼆次剩余,遗憾的是它并不能帮助我们找到y。

当p \equiv 3(mod \, 4)时,有⼀个简单公式来计算模p的⼆次剩余的平⽅根,假定y是⼀个模p的⼆次剩余,且y \equiv 3 (mod \, 4)那么有\begin{align} (\pm y^{\frac {p+1}{4}})^{2} \equiv & y^{\frac{p+1}{2}} (mod \, p) \\ \equiv & y^{\frac{p-1}{2}}y (mod \, p) \\ \equiv & y(mod \, p) \\ \end{align}这⾥⼜⼀次使⽤了Euler准则,即当y是⼀个模p的⼆次剩余时,有y^{\frac{p-1}{2}} \equiv 1 (mod \, p),因此,y模p的两个平⽅根为\pm y^{\frac{p+1}{4}} (mod \, p),同样的讨论可以知道,y模q的两个平⽅根为\pm y^{\frac{p+1}{4}} (mod \, q),再利⽤中国剩余定理可以得到y模n的四个平⽅根。

密码学知识点总结

密码学知识点总结

密码学知识点总结密码学的发展可以追溯到古代,古希腊和罗马就有使用密码进行通信的记录。

而现代密码学的起源可以追溯到二战期间,当时的盟军和轴心国都使用密码学来保护其通信内容。

随着计算机技术的发展,密码学变得更加重要和复杂,研究和应用领域也日益广泛。

在密码学中,有许多重要的概念和技术,下面我们将简要介绍一些主要的知识点。

1. 对称加密和非对称加密对称加密是指加密和解密使用相同的密钥的加密方式。

例如,最简单的对称加密算法是凯撒密码,使用一个固定的偏移量将字母替换成其他字母来加密。

而非对称加密则使用不同的密钥进行加密和解密,公钥用于加密,私钥用于解密。

非对称加密算法有RSA、椭圆曲线加密等。

对称加密的速度通常更快,而非对称加密更安全,因为加密和解密的密钥是分离的。

2. 数字签名数字签名是一种确保信息完整性和真实性的技术,它用于验证信息的发送者是合法的。

数字签名通过使用发送者的私钥对信息进行签名,接收者通过使用发送者的公钥来验证签名的有效性。

数字签名在电子支付、电子合同和网上交易中发挥了重要作用。

3. 哈希函数哈希函数是将任意长度的输入数据转换成固定长度的输出数据的一种函数。

哈希函数具有单向性和抗碰撞的特性,即不能通过哈希值还原出原始数据,且不同的输入数据产生相同的哈希值的可能性极小。

哈希函数在密码学中用于密码存储、数字签名、消息摘要等方面。

4. 加密协议加密协议是一种用于保护通信数据安全的协议。

例如,SSL/TLS协议用于在互联网上安全地传输数据,IPsec协议用于在网络层保护通信数据。

加密协议通常包括密钥交换、加密算法和认证机制。

5. 公钥基础设施(PKI)公钥基础设施是一种用于管理公钥和数字证书的框架。

PKI包括数字证书颁发机构(CA)、注册机构(RA)和证书库。

数字证书是用于验证公钥和身份的一种凭证,它通常包括了公钥、持有者的身份信息和数字签名。

密码学是一门广泛的学科,涉及到数学、计算机科学、信息安全等多个领域。

密码学重要知识点总结

密码学重要知识点总结

密码学重要知识点总结一、密码学的基本概念1.1 密码学的定义密码学是一门研究如何保护信息安全的学科,它主要包括密码算法、密钥管理、密码协议、密码分析和攻击等内容。

密码学通过利用数学、计算机科学和工程学的方法,设计和分析各种密码技术,以确保信息在存储和传输过程中不被未经授权的人所获得。

1.2 密码学的基本原理密码学的基本原理主要包括保密原则、完整性原则和身份认证原则。

保密原则要求信息在传输和存储过程中只能被授权的人所获得,而完整性原则要求信息在传输和存储过程中不被篡改,身份认证原则要求确认信息发送者或接收者的身份。

1.3 密码学的分类根据密码的使用方式,密码学可以分为对称密码和非对称密码两种。

对称密码是指加密和解密使用相同的密钥,而非对称密码是指加密和解密使用不同的密钥。

1.4 密码学的应用密码学广泛应用于电子商务、金融交易、通信、军事、政府和企业等领域。

通过使用密码学技术,可以保护重要信息的安全,确保数据传输和存储的完整性,以及验证用户的身份。

二、密码算法2.1 对称密码对称密码是指加密和解密使用相同的密钥。

对称密码算法主要包括DES、3DES、AES 等,它们在实际应用中通常用于加密数据、保护通信等方面。

对称密码算法的优点是加解密速度快,但密钥管理较为困难。

2.2 非对称密码非对称密码是指加密和解密使用不同的密钥。

非对称密码算法主要包括RSA、DSA、ECC等,它们在实际应用中通常用于数字签名、密钥交换、身份认证等方面。

非对称密码算法的优点是密钥管理较为方便,但加解密速度较慢。

2.3 哈希函数哈希函数是一种能够将任意长度的输入数据映射为固定长度输出数据的函数。

哈希函数主要用于数据完整性验证、密码存储、消息摘要等方面。

常见的哈希函数包括MD5、SHA-1、SHA-256等。

2.4 密码算法的安全性密码算法的安全性主要由它的密钥长度、密钥空间、算法强度和密码破解难度等因素决定。

密码算法的安全性是密码学研究的核心问题,也是密码学工程应用的关键因素。

密码学笔记——playfair密码

密码学笔记——playfair密码

密码学笔记——playfair密码Playfair密码(Playfair cipher 或 Playfair square)⼀种替换密码,1854年由(Charles Wheatstone)的英国⼈发明。

某种加密⽅式,玩⼀玩吧密钥:shiyanb 密⽂:KQSAMFPAOPMFPA hint:⼀律采⽤横向Hint: key⼩写1、编制密码表编⼀个5*5的密码表,共有5⾏5列字母。

第⼀列(或第⼀⾏)是密钥,其余按照字母顺序,如果密钥过长可占⽤第⼆列或⾏。

密钥是⼀个单词或词组,若有重复字母,可将后⾯重复的字母去掉。

当然也要把使⽤频率最少的字母去掉(它依据⼀个5*5的正⽅形组成的密码表来编写,密码表⾥排列有25个字母。

如果⼀种语⾔字母超过25个,可以去掉使⽤频率最少的⼀个。

如,法语⼀般去掉w或k,德语则是把i和j合起来当成⼀个字母看待,英语中z使⽤最少,可以去掉它)。

例:密钥是Live and learn,去掉后则为liveandr密钥:shiyanb 可编成s h i y an b c d ef g j k lm o p q rt u v w x2、整理明⽂/密⽂,将明⽂/密⽂每两个字母组成⼀对。

如果成对后有两个相同字母紧挨或最后⼀个字母是单个的,就插⼊⼀个字母X(或者Q)。

密⽂: KQSAMFPAOPMFPAKQ SA MF PA OP MF PA3、解密规则(1)若c1 c2在同⼀⾏,对应明⽂p1 p2分别是紧靠c1 c2 左端的字母。

其中最后⼀列被看做是第⼀列的左⽅。

(2)若c1 c2在同⼀列,对应明⽂p1 p2分别是紧靠c1 c2 上⽅的字母。

其中最后⼀⾏被看做是第⼀⾏的上⽅。

(3)若c1 c2不在同⼀⾏,不在同⼀列,则p1 p2是由c1 c2确定的矩形的其他两⾓的字母。

密⽂:KQ SA MF PA OP MF PA明⽂:dk ay fn ir mo fn ir4、加密规则(1)若p1 p2在同⼀⾏,对应密⽂c1 c2分别是紧靠p1 p2 右端的字母。

密码学基础知识点总结

密码学基础知识点总结

密码学基础知识点总结密码学是研究保护信息安全的科学和技术领域,涉及到加密、解密、认证和数据完整性等方面。

以下是密码学基础知识的一些关键点:1.加密和解密:加密(Encryption):将原始信息转换为不可读的形式,以防止未经授权的访问。

使用密钥来执行加密过程。

解密(Decryption):将加密的信息恢复为原始形式,需要相应的解密密钥。

2.对称加密和非对称加密:对称加密:加密和解密使用相同的密钥。

常见的算法包括AES(高级加密标准)。

非对称加密:加密和解密使用不同的密钥,通常分为公钥和私钥。

常见的算法有RSA、ECC。

3.哈希函数:哈希函数将任意长度的输入数据转换为固定长度的哈希值。

具有单向性,不可逆,相同输入产生相同输出,不同输入尽可能产生不同输出。

4.数字签名:数字签名用于确保消息的来源和完整性。

使用私钥对消息进行签名,接收者使用对应的公钥来验证签名的有效性。

5.公钥基础设施(PKI):PKI是一组处理数字证书、公钥管理和相关的安全增强技术的标准和实践。

用于建立信任、验证身份和确保信息安全。

6.SSL/TLS协议:SSL(安全套接层)和其继任者TLS(传输层安全)是用于在网络上保护数据传输的协议。

提供加密、认证和数据完整性。

7.密钥交换协议:用于在通信双方之间安全地交换密钥的协议。

常见的有Diffie-Hellman密钥交换算法。

8.零知识证明:零知识证明允许一个参与者证明他知道某些信息,而不泄露这些信息的内容。

在身份验证和隐私保护上有广泛应用。

9.密码学攻击和防御:主动攻击(如中间人攻击)、被动攻击(如监听)等是密码学常见的威胁。

常规的防御手段包括使用强密码、定期更改密钥、使用安全协议等。

10.量子密码学:针对未来量子计算机可能对传统加密算法构成威胁的研究领域,包括量子密钥分发等技术。

这些基础知识点构成了密码学的核心,了解它们对于理解信息安全、网络通信和数据保护等方面至关重要。

密码学知识点总结

密码学知识点总结

密码学知识点总结密码学是研究如何保护信息安全的一门学科,它包括了密码学的基本概念、密码算法、密码协议和密码分析等知识点。

以下是密码学的一些知识点总结:1. 密码学的基本概念:- 明文和密文:明文是未经加密的原始信息,密文是经过密码算法加密后的信息。

- 加密和解密:加密是将明文转换为密文的过程,解密是将密文转换为明文的过程。

- 密钥:密钥是用于加密和解密的算法参数。

- 对称加密和非对称加密:对称加密使用相同的密钥加密和解密数据,非对称加密使用不同的密钥。

2. 对称密钥算法:- DES(Data Encryption Standard):数据加密标准,使用56位密钥。

- AES(Advanced Encryption Standard):高级加密标准,使用128、192或256位密钥。

- Rijndael算法:AES算法的前身,支持更多的密钥长度。

3. 非对称密钥算法:- RSA:Rivest, Shamir和Adleman发明的算法,广泛用于密钥交换和数字签名。

- Diffie-Hellman密钥交换:用于在不安全的通信渠道上安全地交换密钥。

- 椭圆曲线密码术(ECC):基于椭圆曲线数学的一种非对称加密算法。

4. 哈希函数:- 哈希函数将任意长度的输入数据转换为固定长度的输出,输出值称为哈希值或摘要。

- 常见的哈希函数有SHA-1、SHA-256、MD5等。

- 哈希函数具有唯一性、不可逆性和抗碰撞性等特性。

5. 数字签名:- 数字签名用于确保数据的完整性、认证发送者和抗抵赖性。

- 数字签名使用发送者的私钥生成,验证时使用发送者的公钥。

- 常用的数字签名算法有RSA和DSA。

6. 密码协议:- SSL/TLS协议:用于在网络上建立安全通信的协议。

- IPsec协议:用于保护IP数据包的协议。

- Kerberos认证协议:用于网络认证的协议。

7. 密码分析:- 密码分析旨在破解密码系统,通常通过暴力破解、频率分析和差分攻击等方法。

密码学笔记

密码学笔记

要传递的确切的消息就是明文。
被加密之后的消息就称为Байду номын сангаас文。
将明文变为密文的过程就称为加密。
将密文变成明文的过程就叫解密。
而加密或者解密的方法(算法)就称为加密算法或者解密算法。
明文 :伪装前的原始数据
密文 :伪装后的数据
密钥 :参与密码变换的参数
加密 :伪装的过程
加密算法:用于对数据加密的一组数学变换
c. 图形图像
古典密码:
-代替密码(substitution cipher)
-置换密码(permutation cipher),又称换位密码(transposition cipher)
古典密码的破译:
单表替换密码的破译:通过字母的使用频率破译、
移位密码的破译:移位密码分析
通常明文用P表示,密文用C表示。加密函数E作用于P得到密文C,可以表示为:
(2)从密文计算出明文部分信息应该是难的。
(3)从密文探测出简单却有用的事实应该是难的,
从攻击效果看,敌手可能达到以下结果:
(1)完全攻破。敌手找到了相应的密钥,从而可以恢复任意的密文。
(2)部分攻破。敌手没有找到相应的密钥,但对于给定的密文,敌手能够获得明文的特定信息。
(3)密文识别。如对于两个给定的不同明文及其中一个明文的密文,敌手能够识别出该密文对应于哪个明文,或者能够识别出给定明文的密文和随机字符串。
对称密钥密码又可分为:
分组密码(也称块密码)(每次对一块数据加密、多数网络加密应用、DES,IDEA,RC6,Rijndael)
流密码(序列密码)(每次对一位或一字节加密)
密码学的起源:

密码学重点全面总结复习

密码学重点全面总结复习

例、 用户A发送给用户B一份密文,用户A向发送m =02签名保密消息。用户A知道下列三个密钥:
A
B
公开密钥(e,n) ( 7,123)
(13,51)
秘密密钥(d,n) (23,123)
(5,51)
A计算他的签名:
再次加密签名:
s = mdA mod nA = ( 02 )23(mod 123 ) = 8
再用A用户的公开密钥解密:
m = seA mod nA = 87(mod 123 ) = 2
B用户可以确认:该签名是由A发出——用A公钥可解读;
该签名是发给自己的——用了B的公钥。
密码系统应满足的要求: 1、易用 2、加密和解密算法必须对所有密钥迅速有效 3、密码体制的安全性仅仅依赖于密钥的保密性
而不依赖于加密算法和解密算法本身的保密 (Kerckhoff原则)
根据密钥特性来分:
单钥体制、双钥体制 对称密钥密码、非对称密钥密码 传统密码、公钥密码
密码攻击类型:
唯密文攻击 已知明文攻击 选择明文攻击 自适应选择明文攻击 选择密文攻击 选择密钥攻击 软磨硬泡攻击
Ki
Ti

f
Li(32bit)
Ri(32bit)
Ri-1
32bit
E
48bit
Ki
48bit

48bit
S1
S2
S3
S8
32bit
P
f (Ri-1,Ki)
32bit
DES的安全性
归纳起来,对分组密码的分析方法主要有如下几种 类型:
(1)穷尽密钥搜索(强力攻击); (2)线性分析方法(已知明文分析); (3)差分分析方法(选择明文分析) ; (4)相关密钥密码分析; (5)中间相遇攻击

密码学课程总结

密码学课程总结

密码学课程总结密码学是一门研究如何设计、实现和管理加密和解密算法的学科,涵盖了对称加密、非对称加密、数字签名、消息认证码等多个领域。

在学习密码学时,我们掌握了一些基本的概念和技术,例如加密算法、解密算法、密钥管理、数字签名等。

本文将总结我们所学的密码学课程,并深入探讨其中的重点和难点。

一、加密算法加密算法是密码学的核心内容之一,用于将明文转换为密文,以便保护数据的安全性。

加密算法主要分为对称加密和非对称加密两种类型。

对称加密是指使用相同的密钥对不同的数据进行加密和解密。

由于密钥相同,因此任何一台设备都可以解密加密的数据。

这种加密算法主要用于数字签名和密钥交换等领域。

非对称加密是指使用不同的密钥对相同的数据进行加密和解密。

非对称加密算法的优点是密钥管理更加容易,但是其缺点是攻击者可以通过分析密钥来解密数据。

二、密钥管理密钥管理是密码学中的重要概念,用于确保加密和解密算法的安全性。

密钥管理分为公钥管理和私钥管理两种类型。

公钥管理是指将密钥分享给其他人,以便进行加密和解密操作。

公钥管理可以确保数据的安全性,但是需要承担密钥泄露的风险。

私钥管理是指将密钥掌握在自己手中,以便进行加密和解密操作。

私钥管理可以确保数据的安全性,但是需要承担密钥被盗用的风险。

三、数字签名数字签名是一种用于验证数据完整性和真实性的方法。

数字签名可以确保数据的来源和完整性,并且可以保护数据不被篡改。

数字签名可以分为公钥签名和私钥签名两种类型。

公钥签名是指使用公钥进行数字签名,然后将签名结果发送给接收方。

公钥签名可以确保数据的安全性,但是需要承担密钥泄露的风险。

私钥签名是指使用私钥进行数字签名,然后将签名结果发送给接收方。

私钥签名可以确保数据的安全性,但是需要承担密钥被盗用的风险。

四、消息认证码消息认证码是一种用于验证消息真实性的方法。

消息认证码可以分为加盐和哈希两种类型。

加盐是指将消息添加到加盐字典中,以便验证消息的完整性。

加盐可以提高消息认证码的安全性能,但是会增加计算成本。

安全密码学笔记

安全密码学笔记

安全密码学笔记一、密码学简介密码学是研究如何将信息进行加密、解密、隐藏和伪装的科学。

它涉及到数学、计算机科学和通信等多个领域。

密码学的主要目的是保护信息的机密性、完整性和可用性。

二、密码学的基本概念1. 加密和解密:加密是将信息转换成无法识别的形式,而解密则是将加密的信息还原成原始的形式。

2. 密钥:密钥是用于加密和解密信息的参数。

在同一个加密算法下,不同的密钥会生成不同的加密结果。

3. 密码攻击:密码攻击是指通过各种手段尝试破解加密信息的行为。

常见的密码攻击包括暴力破解、字典攻击、侧信道攻击等。

三、对称加密对称加密是指加密和解密使用相同密钥的加密方式。

常见的对称加密算法有AES、DES等。

对称加密的优点是加密速度快,适合大量数据的加密,但缺点是密钥管理困难,需要安全地存储和传输密钥。

四、非对称加密非对称加密是指加密和解密使用不同密钥的加密方式。

常见的非对称加密算法有RSA、ECC等。

非对称加密的优点是易于管理密钥,安全性较高,但缺点是加密速度较慢,不适合大量数据的加密。

五、哈希函数哈希函数是一种将任意长度的数据映射为固定长度哈希值的函数。

常见的哈希函数有SHA-256、MD5等。

哈希函数主要用于验证数据的完整性和唯一性,但不能用于加密解密。

六、数字签名数字签名是一种通过数字证书和私钥对数据进行签名的方式,用于验证数据的完整性和来源。

数字签名可以防止数据被篡改和伪造,常用于电子签名、电子合同等场景。

七、混合加密混合加密是指将对称加密和非对称加密结合起来使用的加密方式。

常见的混合加密算法有RSA-OAEP、AES-GCM等。

混合加密的优点是安全性高且速度快,适用于各种安全需求场景。

密码学相关实验报告

密码学相关实验报告

一、实验目的1. 理解并掌握常见的加密算法和密码体制的基本原理。

2. 学会使用密码学工具进行加密和解密操作。

3. 增强网络安全意识,提高对密码学在实际应用中的认识。

二、实验内容1. 仿射密码2. 单表代替密码3. 维吉尼亚密码4. AES加密算法三、实验原理1. 仿射密码:加密原理为将明文进行0~25字母编码,按照加密公式计算出密文对应位置的字母编码,最后从密文的字母编码还原出密文对应位置的字母。

解密原理与加密原理相反。

2. 单表代替密码:加密原理为利用代替表,将明文中的每个字符映射到密文。

解密原理为对代替表进行反向查找,由密文映射回明文。

3. 维吉尼亚密码:加密原理为通过加密方程Ci (pi k(i mod m)) mod 26,由明文得到密文。

解密原理为解密过程是加密过程的逆过程,通过解密方程pi (Cik(i mod m)) mod 26。

4. AES加密算法:是一种分组加密算法,将128位明文分为128位的数据块,使用密钥进行加密,得到128位的密文。

解密过程与加密过程相反。

四、实验步骤1. 仿射密码(1)选择明文:选择一段英文或数字,例如:"Hello World!"(2)选择密钥:选择一个密钥a和模数m,例如:a=5,m=26。

(3)加密:将明文进行0~25字母编码,按照加密公式计算出密文对应位置的字母编码,最后从密文的字母编码还原出密文对应位置的字母。

(4)解密:将密文进行0~25字母编码,按照解密公式计算出明文对应位置的字母编码,最后从明文的字母编码还原出明文对应位置的字母。

2. 单表代替密码(1)构造代替表:选择一个代替表,将明文中的每个字符映射到密文。

(2)加密:将明文中的每个字符按照代替表进行映射,得到密文。

(3)解密:将密文中的每个字符按照代替表的逆映射,得到明文。

3. 维吉尼亚密码(1)选择密钥:选择一个密钥,例如:"KEY"(2)加密:将明文和密钥进行异或操作,得到密文。

现代密码学笔记

现代密码学笔记

现代密码学笔记在如今这个数字化的时代,信息安全变得至关重要。

而现代密码学,就像是守护信息世界的神秘卫士,充满了令人着迷的魅力和挑战。

我还记得第一次接触现代密码学的那个下午。

阳光透过窗户洒在课桌上,我带着满心的好奇翻开了那本厚厚的教材。

原本以为会是一堆枯燥的理论和复杂的公式,没想到却走进了一个充满惊喜和神秘的世界。

老师在讲台上眉飞色舞地讲着对称加密算法,什么 DES 啦,AES 啦。

说实话,一开始我听得云里雾里的。

但当老师开始举例子的时候,一切都变得有趣起来。

他说:“想象一下,你有一个特别珍贵的秘密,比如你偷偷藏了一大包巧克力,不想被别人发现。

这时候,对称加密就像是给这个秘密加上了一把只有你自己有钥匙的锁。

你用一种特殊的方法把巧克力藏起来(加密),只有你拿着那把唯一的钥匙(密钥)才能找到并打开(解密)。

”听到这儿,我忍不住笑了,心里想着:这密码学还挺有意思的嘛!后来,我们学到了非对称加密算法,也就是公钥和私钥那一套。

老师又举了个好玩的例子:“假设你要给远方的朋友寄一封情书,但又怕被别人偷看。

这时候,你可以生成一对钥匙,一把是公钥,就像是一个公开的信箱,谁都能往里面放东西;另一把是私钥,只有你自己能打开这个信箱取出里面的东西。

你把公钥给你的朋友,让他用这个公钥把情书加密后寄给你,就算路上有人截获了这封加密的情书,没有你的私钥,也休想读懂里面的甜言蜜语。

”这让我不禁联想到,要是古代的那些才子佳人也懂这些加密技术,是不是就不会有那么多因为情书被截获而引发的悲剧啦?在学习哈希函数的时候,老师更是别出心裁。

他说:“哈希函数就像是一个神奇的魔法机器,你把任何东西扔进去,它都会给你吐出一个固定长度的、看起来毫无规律的结果。

而且,哪怕你输入的东西只改变了一点点,比如一个数字或者一个字母,吐出来的结果都会完全不同。

就好像你给这个魔法机器一个苹果,它给你变出一串数字;你再给它一个稍微有点瑕疵的苹果,它就变出完全不同的另一串数字。

《应用密码学》学习笔记

《应用密码学》学习笔记

《应用密码学》学习笔记以下是我对《应用密码学》这本书的部分学习笔记,比较简单。

笔记中对现代常用的加密技术进行了简单的归类和解释,有兴趣的同学可以看一下,没看过的同学就当普及知识了,看过的同学就当复习了。

笔记里面可能有错别字,有的话请各位看客帮忙指正。

第1章密码学概述1-1、1-21.密码技术的发展历史大致可以划分为三个时期:古典密码、近代密码和现代密码时期。

2.公元前440多年的斯巴达克人发明了一种称为“天书”的加密器械来秘密传送军事情报。

这是最早的移位密码。

3.1919年德国人亚瑟·谢尔比乌斯利用机械电气技术发明了一种能够自动编码的转轮密码机。

这就是历史上最著名的德国“埃尼格玛”密码机。

4.1949年香农的奠基性论文“保密系统的通信理论”在《贝尔系统技术杂志》上发表。

5.1977年,美国国家标准局正式公布实施了美国的数据加密标准(DES)。

6.1976年11月,名美国斯坦福大学的著名密码学家迪菲和赫尔曼发表了“密码学新方向”一文,首次提出了公钥密码体制的概念和设计思想。

7.1978年,美国的里韦斯特(R.L.Rivet)、沙米尔(A.Shamir)和阿德勒曼(L.Adleman)提出了第一个较为完善的公钥密码体制——RSA体制,成为公钥密码的杰出代表和事实标准。

8.2000年10月,比利时密码学家JoanDaemen和VincentRijmen提出的“Rijndael数据加密算法”被确定为AES算法,作为新一代数据加密标准。

1-31.密码学的主要任务:密码学主要为存储和传输中的数字信息提供如下几个方面的安全保护:机密性、数据完整性、鉴别、抗抵赖性。

2.密码体制中的有关基本概念:明文(plainte某t):常用m或p表示。

密文(cipherte某t):常用c表示。

加密(encrypt):解密(decrypt):密码算法(cryptographyalgorithm):简称密码(cipher)。

密码工程1-2章学习笔记

密码工程1-2章学习笔记

密码⼯程1-2章学习笔记密码⼯程第⼀章密码学研究范围密码学是⼀门科学和⼀门艺术。

良好的密码学系统许需要科学背景以及在考虑安全问题时将经验和正确的⼼态结合起来的良⽅。

密码学第⼀课:保持批判的精神!不要盲⽬地相信任何内容,即使是被印成铅字的内容。

1.1 密码学的应⽤密码学本⾝没有价值,必须作为⼀个系统的⼀部分,以起到相应的作⽤。

需要能够提供系统的访问控制功能。

密码学好⽐⼀把锁,如果安全系统的其他部分不能对抗攻击,攻击者就会绕过这把锁。

1.2 ⽊桶原理每个安全系统的安全性都取决于它最脆弱的环节。

为了提⾼系统的安全性,我们必须提⾼最脆弱环节的安全性。

每个环节的强度都取决于攻击者的能⼒、⼯具和对系统的访问,最脆弱的环节是由具体情况⽽定的。

要对实际情况中可能成为最脆弱环节的所有环节进⾏强化,使整个系统具备纵深防御(defense in depth)的性质。

1.3 对⼿设定安全系统和⼏乎其他所有类型的⼯程之间的最⼤区别之⼀在于对⼿的设定。

必须考虑所有类型的攻击。

任务是构建⼀个能够抵抗所有攻击的系统。

1.4 专业偏执狂我们要像⼀个恶意的攻击者那样进⾏思考。

偏执狂模型:每⼀个参与者都参与欺骗,攻击者有多个攻击⽬标。

1.41 更⼴泛的好处最重要的是发现可能存在的安全问题。

1.4.2 攻击换位思考,把⾃⼰⽐作攻击者。

在攻击系统时,要保证只专注于系统的技术,⽽不是在批判其设计者,同时也要注意设计者可能对安全领域建设性批评的风⽓并不习惯。

1.5 威胁模型我们需要在特定的威胁模型中评估⼀个系统的安全性。

在开始⼀个密码安全项⽬时,⾸先要考虑所要保护的资产和抵抗的威胁是什么,威胁分析中的⼀个错误会导致整个项⽬毫⽆意义。

1.6 密码学不是唯⼀解决⽅案正确使⽤密码学需要经过仔细考虑。

1.7 密码学是⾮常难的问题1:⽊桶原理和对⼿设定因素结合在⼀起使得密码学家甚⾄任何安全⼯程师的⼯作都⾮常困难,即使经验丰富的专家设计的系统⼏年之后也可能被攻破。

密码学学习总结

密码学学习总结

密码学学习总结⼀、密码学基础密码学要解决信息的机密性、完整性和不可否认性。

其中:机密性:对传递的信息进⾏加密就可以实现机密性,保证信息不泄漏给未经授权的⼈。

(对称、⾮对称加密)完整性:防⽌信息被未经授权的⼈篡改,保证信息不被篡改。

(单向散列、消息认证码、数字签名)不可否认性:能够保证信息⾏为⼈不能否认其信息⾏为。

(对应的技术数字签名)⾝份认证:也能实现⾝份认证。

(对应技术有消息认证、数字签名)1.1、密码学基本元素明⽂(plain text):希望得到保密的原始信息密⽂(cipher text):明⽂经过密码变换后的消息加密(encryption):由明⽂变换为密⽂的过程解密(decryption):由密⽂恢复出明⽂的过程加密算法(encryption algorithm):对明⽂进⾏加密时采⽤的⼀组规则解密算法(decryption algorithm):对密⽂进⾏解密时采⽤的⼀组规则秘钥(key):控制加密和解密算法操作的信息1.2、密码学的分类密码学的密码算法可以分为:对称加密(Sysmmetric Cryptography)和⾮对称加密(Asymmetric Cryptography)以及⽤于确认数据完整性的单向散列(One-Way Hash Funcrion)⼜称密码校验(Cryptographic Checksum)、指纹(Fingerprint)、消息摘要(Message Digest)。

1.2.1 对称加密特点:在加密和解密使⽤同⼀秘钥。

优点:加密或解密运算速度块,加密强度⾼,算法公开。

缺点:秘钥分发难,更新周期长,不便于管理。

对称密码算法有AES算法(Advanced Encryption Standard)⼜称⾼级加密标准Rijndael加密发,属于⾮保密、公开披露的,在各种平台上易于实现、速度快,设计简单,密⽂和明⽂长度⼀致,硬件⽀持、加密芯⽚。

DES也是对称密码算法,就是⽼了。

密码分析学习笔记-差分分析(1)

密码分析学习笔记-差分分析(1)

密码分析学习笔记-差分分析(1)差分分析和线性分析是分组密码算法最基本和最重要的分析⽅法,同时,在设计分组密码算法时,密码算法抵抗差分分析和线性分析的能⼒也是密码设计者重点关注的因素之⼀。

希望能通过本次学习理清楚差分分析的原理^-^⼀、分组密码常见分析⽅法的总体思路:1.攻击思想:区分攻击:经过加密之后相同的明⽂,⼀定会对应相同的密⽂。

发现不随机特征,将密码算法和伪随机函数区分开。

构造区分器。

分别征服攻击(Divide-and-Conquer Attack):利⽤区分器降低搜索空间⼤⼩,提⾼求解效率。

将搜索或求解空间进⾏分割,将必须整体搜索的⼤空间分割为局部可搜索的⼩空间。

2.常见的攻击:差分分析:利⽤⾼概率的差分路线构造区分器。

线性分析:利⽤⾼偏差的线性逼近式构造去的区分器。

不可能差分分析:利⽤概率为0的差分特征。

飞去来器和矩形攻击:同时利⽤两条⾼概率的差分路线。

截断差分:同时利⽤满⾜特定条件的差分概率合集。

零相关攻击、滑动攻击……⼆、差分攻击技术:1.差分分析:1990年Eli Biham与Adi Shamir在密码学顶级会议美密会Crypto公开发表对DES的差分分析。

256→247个选择明⽂,237.2次加密运算,O(1)的内存。

2.差分分析的基本概念:差分:设X和X*是长度为n的⼆进制⽐特串,则ΔX=X⊕X*称为X和X*的差分,其中⊕为按⽐特的异或运算。

差分的定义并不唯⼀:例如:若加法含有模加运算,常采⽤模加差分ΔX=X⊕X*mod2n。

差分的⽬的:刻画差异性(即不同⽐特的个数)。

例:若X=1001,X*=1011,则X⊕X*=0010,X+X*=0100。

三、差分的概率传播特性:1.异或密钥差分值不变:设K i为第i轮的轮密钥,则(X⊕K i)⊕(X*⊕K i)= X⊕X*=ΔX2.过线性变化差分值确定:设P为线性变换,则P(X)⊕P(X*)=P(X⊕X*)=P(ΔX)例如:P(X)= P(X0||X1||X2||X3)=X3||X1||X0||X2P(X)⊕P(X*)= P(X0||X1||X2||X3)⊕P(X0*||X1*||X2*||X3*)=ΔX3||ΔX1||ΔX0||ΔX2=P(ΔX3||ΔX1||ΔX0||ΔX2)=P(ΔX)3.⾮线性变换差分值不确定:设S为⾮线性变换,⼀般情况下,S(X)⊕S(X*)≠S(ΔX)例:设第⼀个S-盒S1的输⼊异或为110100,那么,Δ(110100)={(000000,110100),(000001,110101),…,(111111,001011)}。

密码学报告

密码学报告

实验一古典密码(认识密码学)一、实验目的通过实现简单的古典密码算法,理解密码学的相关概念如明文(plaintext )、密文(ciphertext )、加密密钥(encryption key)、解密密钥(decryption key )、加密算法(encryption algorithm)、解密算法(decryption algorithm)等。

二、实验内容1.用C\C++语言实现仿射变换(Affine )加/解密算法;2.用C\C++语言实现统计26个英文字母出现的频率的程序;3.利用仿射变换加/解密程序对一段较长的英文文章进行加密,再利用统计软件对明文和密文中字母出现的频率进行统计并作对比,观察有什么规律。

放射变换:加密:()26mod ,b am m E c b a +== 解密:()()26mod 1,b c ac D m b a -==-其中a, b 为密钥,25,0≤≤b a ,且gcd(a, 26)=1三、实验要求加/解密程序对任意满足条件的a 、b 都能够处理。

四、实验步骤(1)统计26个英文字母出现的频率(源程序见附录)运行结果:(1)仿射变换加/解密程序对一段较长的英文文章进行加密运行结果:明文:密文:解密:实验二流密码(认识LFSR及流密码)一、实验目的通过实现简单的线性反馈移位寄存器(LFSR),理解LFSR的工作原理、本原多项式重要意义。

二、实验内容(1)利用C\C++语言实现LFSR(其中LFSR已给定);(2)通过不同初始状态生成相应的序列,并观察他们的周期有什么特点;(3)利用生成的序列对文本进行加/解密(按对应位作模2加运算)。

其中的LFSR为:三、实验结果及分析运行结果:明文:密文:解密:流密码(生成非线性序列)一、实验目的以LFSR序列为基础,生成非线性序列,并利用该序列对文件进行加密、解密。

二、实验内容1)利用C\C++实现Geffe序列生成器及J-K触发器;2)利用生成的非线性序列对文件进行加密、解密(按对应位作模2加运算)。

密码学课程报告[5页]

密码学课程报告[5页]

密码学课程报告卢学东(学号:010182025,导师:张治国)1. 概述本程序是一个对RSA 加密和解密方法的演示程序,它的界面如下:公钥和密钥可以自己键入,也可以按“自动产生”由程序随机产生两个100个十进制位的素数。

下面最左方的文本框里的是要加密的文本,它也可以由文本文件输入。

按“加密>>”按钮将对输入的文本进行加密,而且结果用十六进制的32位整数串给出。

按“解密>>”将对加密结果进行解密,结果放在最右边的文本框里。

RSA 加解密的关键算法是大整数运算、模幂算法、素数产生和判断、模m 逆元的求法、以及RSA 本身的加解密算法。

下面将一一详述。

2. 大整数的基本算法由于想使用现有的CPU 的32乘法指令,所以用原码表示一个大整数,且存放在一个32位整数为单位的数组里,用一个类成员lliLength (lliLength ≥1)表示数组的长度。

另外在类中加了一个成员sign ,表示大整数的符号。

为了提高运算速度,关键算法例如加减乘除和从一个十进制字符串转换成大整数的算法全部用了汇编语言实现。

加法很简单,只用了带进位的加法指令adc ,因为最低一个双字相加时用clc 指令把进位清零。

减法只用了带借位的减法指令sbb ,因为最低一个双字相减时用clc 指令把借位清零。

乘法的算法如下:假设两个大整数M1和M2相乘,M1的长度为n1个32位整数,表示为m1n1-1m1n1-2…m10,M2的长度为n2个32位整数,表示为m2n2-1m2n2-2…m20,则相乘时首先把一个大小为n1+n2的缓冲区清零,然后计算Pj = ∑=⨯1-n 1112j j i m m (0≤i ≤n2-1),把Pj 加到缓冲区的从第j 个双字开始的临时结果中。

除法就比较麻烦,是按照移位和相减的方法进行,具体步骤如下:1) 如果被除数小于除数,返回0。

2) 假设被除数有D1个双字,除数有D2个双字。

比较被除数和除数的前D2个双字,如果小于,在被除数前补上一个为0的32位整数;否则,在被除数前补上两个为0的32位整数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

密码学课程报告卢学东(学号:010182025,导师:张治国)1. 概述本程序是一个对RSA 加密和解密方法的演示程序,它的界面如下:公钥和密钥可以自己键入,也可以按“自动产生”由程序随机产生两个100个十进制位的素数。

下面最左方的文本框里的是要加密的文本,它也可以由文本文件输入。

按“加密>>”按钮将对输入的文本进行加密,而且结果用十六进制的32位整数串给出。

按“解密>>”将对加密结果进行解密,结果放在最右边的文本框里。

RSA 加解密的关键算法是 大整数运算、模幂算法、素数产生和判断、模m 逆元的求法、以及RSA 本身的加解密算法。

下面将一一详述。

2. 大整数的基本算法由于想使用现有的CPU 的32乘法指令,所以用原码表示一个大整数,且存放在一个32位整数为单位的数组里,用一个类成员lliLength (lliLength ≣1)表示数组的长度。

另外在类中加了一个成员sign ,表示大整数的符号。

为了提高运算速度,关键算法例如加减乘除和从一个十进制字符串转换成大整数的算法全部用了汇编语言实现。

加法很简单,只用了带进位的加法指令adc ,因为最低一个双字相加时用clc 指令把进位清零。

减法只用了带借位的减法指令sbb ,因为最低一个双字相减时用clc 指令把借位清零。

乘法的算法如下:假设两个大整数M1和M2相乘,M1的长度为n1个32位整数,表示为m1n1-1m1n1-2…m10,M2的长度为n2个32位整数,表示为m2n2-1m2n2-2…m20,则相乘时首先把一个大小为n1+n2的缓冲区清零,然后计算Pj = ∑=⨯1-n 1112j j i m m (0≢i ≢n2-1),把Pj 加到缓冲区的从第j 个双字开始的临时结果中。

除法就比较麻烦,是按照移位和相减的方法进行,具体步骤如下:1) 如果被除数小于除数,返回0。

2) 假设被除数有D1个双字,除数有D2个双字。

比较被除数和除数的前D2个双字,如果小于,在被除数前补上一个为0的32位整数;否则,在被除数前补上两个为0的32位整数。

3) 令商等于0。

4)计算要移位的二进制位的总数为(D1+4-D2)×8(被除数前补32位整数)或者(D1+8-D2)×8(被除数前补64位整数)。

5)计算被除数和除数的最高的双字的二进制的0的个数(从高位算起,直到遇到第一个不是0的二进制位),且分别命名为dividendLeadingZeros和divisorLeadingZeros。

商和被除数左移max(1, dividendLeadingZeros – divisorLeadingZeros) 6)比较除数和被除数的前D2个双字,如果大于,商的最低位置0;否则置1,且被除数的前D2个双字减去除数,放回原缓冲区。

7)转5,直到被除数左移的位数等于4)中算出的移位总数。

3.随机数序列的产生Shannon证明了一次一密密码体制是不可破的,这一结果给密码学研究以很大的刺激。

若能以一种方式产生一随机序列,这一序列由密钥所决定,则利用这一序列就可进行加密。

随机数序列在RSA算法中也占据了非常重要的位置,尤其在素数查找和测试时。

无论是用Jacobi概率测试法还是Miller-Rabin概率测试法,均需要一个从1到n的随机数序列,而且这些随机数要求是等概率产生的。

这在计算机系统里几乎是不可能的。

在产生素数时,本程序使用的是这样的一个方法:产生一个十进制数字的字符串,这个字符串中的每一个字符均“随机”从字符‘0’到字符‘9’。

具体做法是用指令rdtsc读取从80386开始就有的一个时钟计数寄存器。

但即使是这样,在这个线程执行的若干毫秒内,产生的序列会非常有规律。

故对从第二个开始产生的字符始,让它和上一个产生的进行异或运算。

这样看上去就大大提高了随机程度。

它的代码如下:while (a < decBitCount){__asm{rdtscmov number, al ;//只要低8位}number = number & 0x0f; //只要低4位if (a > 0)number = number ^ (strDec[a-1] - '0');if (number > 9)number = number - 6;if (a==0 && number==0)number = 5;strDec[a] = number + '0';a++;}在素数测试时,用rdtsc先获取一个“随机”的32位整数,然后用这个整数和要测试的大整数的每一双字进行异或,再根据数的范围进行处理。

它的代码如下: __asm ;//取得32位“随机”数{rdtscmov ebx, eaxxor bh, almov dh, bhror ebx, 8xor bh, dhror ebx, 8xor bh, dhror ebx, 16mov randomInt, ebx}b = *this;unsigned int *pbLLI = b.pLLI;__asm{mov eax, thismov ecx, [eax][lliLength]mov edi, pbLLImov edx, randomIntXorBLLI:xor [edi], edx ;//逐个双字异或mov edx, [edi]add edi, 4loop XorBLLIsub edi, 4mov esi, [eax][pLLI]mov ecx, [eax][lliLength]dec ecxshl ecx, 2add esi, ecxmov edx, [esi]BLLIDiv2:cmp [edi], edx ;//比较最高的双字jb BLLIDiv2Overshr dword ptr [edi], 1 ;//比n大就除以2jmp BLLIDiv2BLLIDiv2Over:}4.模幂算法求m e (mod n)的基本原理是通过把指数e化为二进制数来实现,下面给出了它的伪C++算法描述:while ( e != 0 ){if ( ( e % 2 ) == 0 ){e = e / 2;m = ( m * m ) % n;}else{e = e - 1;c = ( m * c ) % n;}}return c;这个算法效率并不高,因为在除以2和对2取模时可以用汇编的移位和测试最后一个二进制位的算法实现,故程序中用汇编进行了优化。

5.素数判断采用Miller-Rabin概率测试法,它的基本原理如下:b2≡-1 (mod n),令n-1=2l m,其中l是非负整数,m是正奇数。

若b m≡1 (mod n) 或m j0≢j≢l-1,则称n通过以b为基的Miller-Rabin测试。

若n是素数,b是整数,且n不能除尽b,则n必然通过以b为基的Miller-Rabin测试。

而且,若n是奇合数,则n通过以b (1≢b≢n-1)为基的Miller-Rabin测试的数目最多为(n-1)/4。

基于以上的理论,若n是正整数,选k个小于n的正整数,以这k个数作为基进行Miller-Rabin测试,若n是合数,k次测试全部通过的概率为(1/4)k。

把上面的思想程序化,假设n-1=2l m,得到下列步骤:1.在{1, 2, …, n-1}中随机均匀地产生一数b(2≢b≢n-1)。

计算V←b m mod n2.若V = 1,转73.i←14.若V = n – 1,转75.若i = l,则n非素数,结束6.V←V2 mod n,i←i + 1,转47.n通过测试在程序中,由于要产生一个随机的大整数比较费时,所以先按照上面3所述的方法产生一个比较随机的数x,再在n和x间均匀地取100个数用作测试。

6.求模m的逆元的算法有下面的这个定理:对于u∈{0, 1, 2, …, m-1},存在u-1∈{0, 1, 2, …, m-1}使得u*u-1≡1 mod m的充要条件是gcd{m, u} = 1。

它的证明如下:证明:必要性。

设g = gcd{m, u} > 1,存在整数g使得bu – qm mod m与bu同余,即bu ≡ bu – qm mod m根据假设gcd{u, m} > 1,bu – qm 将被g除尽,故bu > 1 mod m,所以bu 不≡ 1 mod m。

充分性。

假定gcd{u, m} = 1,根据gcd{u, m}的定理,存在a和b,使得gcd{u, m} = au + bm = 1也就是说存在a使得au ≡ 1 mod m故:a = u-1假如u有逆元素,则上面的证明过程提供了求逆元的方法。

即利用n1 = m,n2 = u,用求a,b使gcd{m, u} = am + bu。

若不存在u-1则gcd{m, u}≠1,否则u-1=b。

程序化后的过程如下:1.n1←m,n2←u,b1←0,b2←12.求q,r,使得n1 = qn2 + r3.若r≠0,则:n1←n2,n2←r,t←b2,b2←b1– qb2,b1←t。

转24.若n2≠1,则给出不存在u-1的信息,然后结束5.若b2 < 0,则b2←b2 + m6.u-1 = b27.RSA算法RSA的加密算法是:1.取两个素数p和q(p、q均保密)2.计算n = pq(公开),φ(n) = (p-1) (q-1)(φ(n)保密)3.随机选取整数e,满足gcd(e, φ(n)) = 1(e公开)4.计算d,满足de≡1 (mod φ(n))(d保密)利用RSA加密的第一步需将明文数字化,并取长度小于log2n位的数字作明文块。

加密算法:c = E(m)≡m e (mod n)解密算法:D(c)≡c d(mod n)本程序规定了p和q是不得小于50个二进制位的素数,且把要加密的信息看作是32位整数的数组,每次取一个作为明文数字块。

明显,232 < 1049。

8.总结经过一个学期的密码学课程的学习和对RSA加解密方法的实践,我认识到数论在现代密码学中的基础作用,以及算法最优化的必要性。

我的程序是用Visual C++ .NET写成的,里面的重要算法虽然用到了汇编,但由于大整数除法的算法效率还比较低,加上用了C++的对象,以及内存分配的new和delete操作,使得效率大大降低。

改进方法是避免C++的返回对象操作,以及自己实现内存分配操作。

另外,由于产生随机数以及随机数序列方法的缺陷,使得在素数测试时,即使把概率设为(1/4)100,有时测试出来的数也不是素数(和Java 的比较得出的结果)。

另外,求模幂的方法也比较原始,这也是速度不快的原因之一。

相关文档
最新文档