数字签名实验报告
电子商务安全 数字签名实验报告

实验二数字签名一实验目的了解数字签名的原理,掌握数字签名的方法,掌握常用的数字签名技术,理解并掌握非对称加密算法的使用。
二实验内容1 散列函数:2 数字签名:3 非对称加密算法的使用三实验步骤1 散列函数(1)任意选择一个文件,分别使用MD5和SHA进行信息摘要实验,比较两种散列算法得到的结果。
注意:这里要完成2种情况的实验。
(2)将文件中的内容进行分别进行不同的修改操作:增加、删除、修改,然后再使用两种散列算法进行信息摘要实验,比较两种算法在不同修改操作得到的结果,并进行分析。
注意,这里要完成6种实验过程。
经过对内容的修改(即使是很小的改动例如一个标点符号),同种算法中得出的结果完全不相同,由此可见散列算法具有唯一性,从而保证了信息传输的安全性。
而且摘要长度大小是一样的,这说明散列算法有定长性。
(3)字符串散列实验:使用自己的姓名和学号当作实验字符串,使用不同的散列算法获得信息摘要,并2 数字签名实验(1)选择一个文件,然后生成信息摘要。
(2)使用RAS算法进行数字签名。
注意自己的私钥和公钥的保存。
(3)将原始文件和签名得到的文件传递给相邻同学,让其验证你的签名。
注意,应告诉对方你的公钥,四实验总结2 总结信息摘要的特点,分析比较原始文件和信息摘要的关系。
(1)对于任何大小的数据,单向散列函数产生定长的信息摘要——定长性;(2)对任何不同的信息,通过单项散列函数产生的指纹都不同——唯一性;(3)已知信息摘要,不能通过推理或计算得到相应的数据——单向性。
信息摘要是根据原始文件通过单项散列函数得到的,并且原始文件一经改变,其信息摘要也会改变;而且无法从信息摘要产生相应的文件信息,这是由其单向性决定的。
也就是说原始文件是信息摘要的基础,而信息摘要无法推断出原始文件,并且原始文件的改变也会改变信息摘要。
3 查找资料,掌握数字签名的原理和过程,画出数字签名的过程。
数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,授受方用发送方的公开密钥进行解密。
数字签名实验的报告

数字签名实验报告比较散列算法MD5和SHA所得到的结果从三方面进行分析:一、安全性:SHA优于MD5,由于160>128二、速度:SHA慢了约25%,因为160>128且80>60三、简易性:SHA对每一步骤的操作描述比MD5简单对实验记录2这个源文件进行各类实验:SHA-1的信息摘要比MD5的要长,无论对源文件做出空格、修改、删除、增加等任何操作,两种散列函数的信息摘要都会发生改变。
1 查找资料,掌握不同散列算法的原理和特点,掌握MD5和SHA散列算法的特点和应用条件。
散列函数有三个主要特点:(1)它能处理任意大小的信息,并将其按信息摘要(Message Digest)方法生成固定大小的数据块,对同一个源数据反复执行Hash函数将总是得到同样的结果。
(2)它是不可预见的。
产生的数据块的大小与原始信息看起来没有任何明显关系,原始信息的一个微小变化都会对小数据块产生很大的影响。
(3)它是完全不可逆的,没有办法通过生成的数据块直接恢复源数据。
常见散列函数有MD5、SHA、MAC、CRC。
MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值。
有两个特点:1、输入两个不同的明文(一段原始的数字信息)不会得到相同的输出值2、根据输出值,不能得到原始的明文,即过程不可逆所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后,把得到的散列值和原始的数据形成一个一对一的映射表,然后在所谓的解密的时候,都是通过这个映射表来查找其所对应的原始明文。
而绝对没有一种算法,可以通过输出加密后的散列值算出原始明文。
·SHA(Secure Hash Algorithm)这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值;·MAC(Message Authentication Code):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。
数字签名算法实习报告

一、实习背景随着互联网技术的飞速发展,网络安全问题日益突出。
数字签名算法作为一种重要的安全机制,在保障信息安全、防止数据篡改、实现身份认证等方面发挥着至关重要的作用。
为了更好地了解数字签名算法,提高自身在网络安全领域的专业技能,我于近期参加了一次关于数字签名算法的实习活动。
以下是本次实习的详细报告。
二、实习内容1. 数字签名算法概述实习期间,我首先学习了数字签名算法的基本概念、原理和分类。
数字签名是一种利用密码学方法对数字信息进行签名生成和签名验证的技术。
它主要包括非对称加密算法和对称加密算法两大类。
非对称加密算法(公钥加密算法)使用两个密钥:公钥和私钥,公钥是公开的,私钥只有签名者持有。
对称加密算法则使用同一个密钥进行加密和解密。
2. 常见数字签名算法实习过程中,我重点学习了以下几种常见的数字签名算法:(1)RSA数字签名算法:RSA是目前计算机密码学中最经典算法,也是目前为止使用最广泛的数字签名算法。
RSA数字签名算法的密钥实现与RSA的加密算法是一样的,算法的名称都叫RSA。
密钥的产生和转换都是一样的,包括在售的所有SSL数字证书、代码签名证书、文档签名以及邮件签名大多都采用RSA算法进行加密。
(2)DSA数字签名算法:DSA(数字签名算法)是一种基于椭圆曲线的数字签名算法,它提供了一种基于身份的密码体制,即公钥与用户的身份信息即标识相关,从而比传统意义上的公钥密码体制有许多优点。
(3)ECDSA数字签名算法:ECDSA(椭圆曲线数字签名算法)是一种基于椭圆曲线的数字签名算法,它是DSA算法的改进版,具有更高的安全性和效率。
3. 数字签名算法在实际应用中的案例分析实习期间,我还学习了数字签名算法在实际应用中的案例分析,主要包括以下几个方面:(1)电子政务:数字签名算法在电子政务领域得到了广泛应用,如电子公文、电子合同、电子证书等。
(2)电子商务:数字签名算法在电子商务领域发挥着重要作用,如在线支付、电子发票、商品溯源等。
数字签名与加密实习报告

数字签名与加密实习报告一、实习背景及目的数字签名和加密是现代信息安全领域中的重要技术,对于保护数据的安全性和完整性起到至关重要的作用。
在本次实习中,我有幸加入了一家知名的互联网安全公司,参与了数字签名和加密技术的研究和应用。
实习的目的是深入了解数字签名和加密的原理和方法,并通过实际操作来掌握相关技能。
二、实习过程及内容1. 数字签名数字签名是数字证书技术的一种应用,它通过使用公钥密码学的方法来保证信息的完整性、真实性和不可否认性。
在实习过程中,我学习了数字签名的基本原理和工作流程。
首先,发起者使用哈希函数对所要发送的数据进行哈希计算,生成一个摘要。
然后,发起者使用自己的私钥对摘要进行加密,形成数字签名。
接收者在收到数据后,使用发起者的公钥对数字签名进行解密,并使用同样的哈希函数对收到的数据进行哈希计算,生成一个新的摘要。
最后,接收者将生成的摘要与解密后的摘要进行比对,如果一致,则说明数据的完整性和真实性没有被篡改。
在实习过程中,我使用了多种数字签名算法,比如RSA、DSA和ECDSA等,学习了它们的特点、安全性和适用场景,并通过具体的实例来加深理解。
我还了解了数字签名的应用场景,比如在电子商务中的安全支付、电子合同的签署以及电子证据的保全等方面。
2. 加密算法加密算法是信息安全领域中的核心技术之一,它通过使用密钥来对数据进行加密,以保证数据在传输和存储过程中的安全性。
在实习中,我学习了对称加密算法和非对称加密算法两种主要的加密方法。
对称加密算法使用同一个密钥来进行加密和解密,常见的对称加密算法有DES、3DES和AES等。
在实习中,我学习了这些算法的工作原理、安全性和性能,并且通过实际操作使用Python编写了加密和解密的代码。
我还了解了对称加密算法的应用场景,比如在网络通信中的数据加密、硬盘文件的加密和数据库的加密等方面。
非对称加密算法使用两个密钥,一个用于加密,另一个用于解密,常见的非对称加密算法有RSA、DSA和ECC等。
密码学实验-实验6 DSA数字签名算法

实验报告一、实验目的理解DSA算法原理二、实验内容与设计思想数字签名是一种以电子形式给消息签名的方法,是只有信息发送方才能进行的签名、信息发送方进行签名后将产生一段任何人都无法伪造的字符串,这段特殊的字符串同时也是对签名真实性的一种证明。
电子信息在传输过程中,通过数字签名达到与传统手写签名相同的效果。
数字签名的实现原理简单地说,就是发送方利用hash算法对要传送的信息计算得到一个固定长度的消息摘要值,用发送方的私钥加密此消息的hash值所生成的密文即数字签名;然后将数字签名和消息一同发送给接收方。
接收方收到消息和数字签名后,用同样的hash算法对消息进行计算,得到新的hash值,再用发送方的公钥对数字签名解密,将解密后的结果与新的hash值比较,如果相等则说明消息确实来自发送方。
DSA(Digital Signature Algorithm)源于ElGamal和Schnorr签名算法,1991年被美国NIST采纳为数字签名标准DSS(Digital Signature Standard),具体实现过程参见图1。
DSS安全性基于有限域求离散对数的困难性,算法描述如下:1.密钥生成算法1)选取160比特长的素数q和L比特长的素数p,满足q|(p−1),其中L≡0(mod 64)且512≤L≤1024;2)随机选取正整数h,1<h<(p-1),令g=h(p−1)/q mod p>1;q,p和g作为系统公开参数;3)每个用户,随机选取正整数x,1≤x≤q−1,计算y=g x mod p;用户的公钥为y,私钥为x。
2.签名算法对于消息M,首先随机选取整数k,1≤k≤p−2,计算r=(g k mod p) mod qs=(H(M)+xr)k−1mod q则M的签名为(r,s),其中H为Hash函数SHA。
3.验证算法接收方收到消息M′和签名(r′,s′)后,计算e1=H(M′)s′−1mod qe2=r′s′−1mod q验证等式(g e1y e2mod p) mod q如果v=r′成立,则说明消息确实来自发送方。
数字签名系统实验报告

一、实验目的1. 理解数字签名的概念和原理;2. 掌握数字签名算法的设计与实现;3. 了解数字签名在信息安全中的应用。
二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C#三、实验内容1. 数字签名算法的选择与设计本实验选用RSA算法作为数字签名算法,RSA算法是一种非对称加密算法,具有较好的安全性。
2. 数字签名算法的实现(1)RSA密钥对的生成RSA算法首先需要生成一对密钥,包括公钥和私钥。
公钥用于加密和解密,私钥用于签名和验证签名。
(2)数字签名生成使用公钥对数据进行加密,得到数字签名。
数字签名是对原始数据的加密,只有使用对应的私钥才能解密。
(3)数字签名验证使用公钥对数字签名进行解密,得到解密后的数据。
将解密后的数据与原始数据进行比较,若一致,则验证成功。
3. 数字签名系统设计(1)系统架构数字签名系统采用分层架构,包括以下层次:- 应用层:负责用户交互、数据处理和存储;- 业务逻辑层:负责数字签名算法的实现;- 数据访问层:负责数据存储和读取。
(2)功能模块- 用户注册与登录:用户注册账号,登录系统;- 数据上传与下载:用户上传待签名的数据,系统生成数字签名,用户下载签名后的数据;- 数字签名验证:用户上传签名后的数据,系统验证签名是否有效。
四、实验步骤1. 创建RSA密钥对在Visual Studio 2019中,使用C#语言创建RSA密钥对。
2. 实现数字签名算法(1)生成数字签名使用公钥对原始数据进行加密,得到数字签名。
(2)验证数字签名使用公钥对数字签名进行解密,得到解密后的数据,并与原始数据进行比较。
3. 设计数字签名系统(1)创建系统架构根据系统需求,设计系统架构。
(2)实现功能模块编写代码实现用户注册、登录、数据上传、下载、签名生成、签名验证等功能。
五、实验结果与分析1. 实验结果本实验成功实现了数字签名系统,用户可以上传待签名的数据,系统生成数字签名,用户可以下载签名后的数据,并对签名进行验证。
数字签名算法实习报告总结

数字签名算法实习报告总结在过去的一段时间里,我有幸参与了数字签名算法的实习项目。
通过这次实习,我对数字签名算法有了更深入的了解,并且掌握了一些实际操作技能。
在此,我将对实习过程进行总结,并分享我的收获和体会。
首先,我了解到数字签名算法是一种重要的加密技术,用于保证电子文档的完整性和真实性。
它类似于传统的签名,可以验证签名者的身份,并确保文档在传输过程中未被篡改。
数字签名算法在电子商务、电子邮件安全等领域有着广泛的应用。
在实习过程中,我学习了多种数字签名算法,包括RSA、DSA和ECC等。
我了解到RSA算法是一种非对称加密算法,具有较高的安全性和灵活性。
DSA算法是一种对称加密算法,它的加解密过程使用相同的密钥,但速度较慢。
ECC算法是一种基于椭圆曲线加密算法,具有较小的密钥长度,但提供相同的安全性。
此外,我还学习了数字签名算法的实现过程。
首先,需要生成一对公钥和私钥。
公钥用于加密数据,私钥用于解密数据。
在签名过程中,签名者使用私钥对数据进行签名,生成一个签名消息。
在验证过程中,验证者使用签名者的公钥对签名消息进行验证,以确认签名的有效性和数据的完整性。
在实习过程中,我通过编写代码实现了数字签名算法的加解密过程。
我使用Python编程语言,利用第三方库实现了RSA、DSA和ECC算法。
我学习了如何生成密钥对、如何进行加解密操作,以及如何生成和验证数字签名。
通过实践,我更好地理解了数字签名算法的原理和应用。
通过这次实习,我不仅学到了数字签名算法的理论知识,还提高了自己的实际操作能力。
我学会了如何选择合适的数字签名算法,如何实现数字签名的生成和验证过程,以及如何保护数字签名的安全性。
这些知识和技能对我今后的学习和职业发展具有重要意义。
总之,这次数字签名算法的实习是一次非常有意义的经历。
我通过学习和实践,掌握了数字签名算法的基本原理和实现方法。
我相信这些知识和技能将在未来的学习和工作中发挥重要作用。
感谢实习项目和指导老师的帮助和支持,使我能够顺利完成这次实习。
快速签名算法实验报告(3篇)

第1篇一、实验背景与目的随着信息技术的飞速发展,数字签名技术在保障数据安全、验证信息真实性等方面发挥着越来越重要的作用。
为了提高数字签名的效率,本研究旨在对快速签名算法进行实验研究,验证算法的有效性和可行性。
二、实验环境与工具1. 操作系统:Windows 102. 编程语言:Python3.83. 库:pyscrypt(加密库)4. 椭圆曲线:secp256k1(比特币使用的椭圆曲线)三、实验内容与步骤1. 快速签名算法选择本实验选择了基于椭圆曲线的签名算法(ECDSA)作为研究对象,因其具有较高的安全性、效率和灵活性。
2. 算法实现(1)生成密钥对:使用椭圆曲线生成器生成私钥和公钥。
```pythonfrom ecdsa import SigningKey, NIST256pprivate_key = SigningKey.generate(curve=NIST256p)public_key = private_key.get_verifying_key()```(2)签名过程:对数据进行签名。
```pythonmessage = b"Hello, World!"signature = private_key.sign(message)```(3)验证过程:使用公钥验证签名。
```pythonpublic_key.verify(signature, message)```3. 性能测试(1)测试不同数据长度对签名时间的影响。
(2)测试不同密钥长度对签名时间的影响。
(3)测试不同签名次数对签名时间的影响。
4. 安全性分析(1)分析快速签名算法的安全性,包括密钥泄露、中间人攻击等。
(2)与其他签名算法(如RSA、ECC)进行比较,分析其优缺点。
四、实验结果与分析1. 性能测试结果(1)数据长度对签名时间的影响:随着数据长度的增加,签名时间逐渐增加,但总体上保持较低的时间消耗。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
附件2:
北京理工大学珠海学院实验报告
ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY
实验题目数字签名实验实验时间 2014.4.8
一、实验目的:
(1)掌握数字签名技术的原理;
(2)熟悉密钥的生成及其应用。
二、实验内容以及步骤:
RSA-PKCS签名算法
(一)签名及验证计算
(1)进入实验实施,默认选择即为“RSA-PKCS”标签,显示RSA-PKCS签名实验界面。
(2)选择明文格式,输入明文信息。
点击“计算SHA1值”按钮,生成明文信息的散列值。
(3)选择密钥长度,此处以512bit为例,点击“生成密钥对”按钮,生成密钥对和参数。
选择“标准方法”标签,在标签下查看生成的密钥对和参数。
(4)标准方法签名及验证
点击“标准方法”标签下的“获得签名值”按钮,获取明文摘要的签名值,签名结果以十六进制显示于相应的文本框内;点击“验证签名”按钮,对签名结果进行验证,并显示验证结果;上述过程如图1.1.8-3所示。
(5)选择“中国剩余定理方法”标签,在标签下查看生成的密钥对和参数。
(6)中国剩余定理方法签名及验证
点击“中国剩余定理方法”标签下的“获得签名值”按钮,获取明文摘要的签名值,签
名结果以十六进制显示于相应的文本框内;点击“验证签名”按钮,对签名结果进行验
证,并显示验证结果。
ELGAMAL签名算法
(1)在“RSA-PKCS”标签下的扩展实验中,点击“ELGAMAL扩展实验”按钮,进入
ELGAMAL签名算法扩展实验窗体。
(2)设置签名系统参数。
在文本框“大素数p”内输入一个大的十进制素数(不要超过8
位);然后在文本框“本原元a”内输入一个小于p的十进制正整数,点击“测试”。
(3)注册用户,在“用户名”文本框中输入一个“注册用户列表”中未出现的用户名,如
“alice”,点击“注册”按钮。
(4)在“用户注册”窗口中的文本框“私钥x”中输入一个小于素数p的十进制非负整数,
点击“确定”按钮;然后,点击“计算公钥”按钮,系统会为该用户生成一对公私钥。
(5)点击“密钥登记”按钮,主窗口的“注册用户列表”中就会出现一个新的用户信息,
重复上述过程,产生不少于2个注册用户。
(6)①输入签名消息。
在“明文M”文本框中输入一个小于p的十进制非负整数,作为
欲签名的消息;在“随机数k”文本框中输入一个小于p的十进制非负整数,作为共享密钥的初始信息;然后点击“确定”按钮。
②签名。
点击“签名”按钮,得到该消息的保密签名结果,③发送签名。
点击“发送签名”按钮,激活验证签名窗口
(7)确定验证方。
在“验证方基本信息”中的“用户名UID”文本框中输入一个已经注册
的用户名,然后点击“获取私钥”按钮,即得到验证方的一些基本信息。
(8)点击“发送确认”按钮,将验证结果通知签名方。
DSA签名算法
(一)签名及验证计算
(1)选择“DSA”标签,进入DSA签名实验界面。
(2)选择明文格式,输入明文信息。
(3)点击“计算SHA1值”按钮,生成明文信息的散列值。
(4)生成参数及密钥
(5)签名及验证
(6)在“算法跟踪”框下点击“生成DSA参数”/“生成DSA密钥”/“获取DSA签名”
/“验证DSA签名”按钮,进入调试器,选择对应的算法函数对DSA参数生成、DSA
密钥生成、DSA签名生成和DSA签名验证进行算法跟踪。
ECC签名算法
椭圆曲线具有在有限域GF(p)和GF(2m)上的两种类型,因此ECC签名算法有两种具体形式,此处以GF(p)为例,GF(2m)可参照完成。
(一)签名及验证计算
(1)选择“ECC”标签,进入ECC签名实验界面。
(2)选择明文格式,输入明文信息。
(3)点击“计算SHA1值”按钮,生成明文信息的散列值。
(4)参数及密钥生成,点击“取得密钥对”,生成椭圆曲线参数和密钥对。
(5)签名及验证,点击“验证签名”按钮,对签名结果r和s进行验证,并显示验证结果。
(二)扩展实验
(1)设置签名系统参数
(2)注册用户
(3)在“主窗口”中,点击“签名”,进入“签名”窗口
(4)确定签名方。
(5)签名运算。
(6)验证签名。
(7)点击“发送确认”按钮,将验证结果通知签名方。
(8)在“算法跟踪”框下点击“取得ECC密钥”/“获得ECC签名”/“验证ECC签名”
按钮,进入调试器,选择对应的算法函数对ECC密钥生成、ECC签名生成、ECC签名验证进行算法跟踪。
三、思考题:
1、数字签名的基本原理
简单地说,就是把附加在数据单元上的一些数据,或是对数据单元所作的密码变换。
发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公用密钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。
数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。
二是数字签名能确定消息的完整性。
因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。
不同的文件将得到不同的数字签名。
一次数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。
”
2、数字签名算法怎么依靠密码学技术来实现的?
在公钥加密技术里,每一个使用者有一对密钥:一把公钥和一把私钥。
公钥可以自由发布,但私钥则秘密保存;普通的数字签名算法包括三种算法:密码生成算法;标记算法;验证算法。
四、实验总结:
通过本次实验,我学到了数字签名的原理、密钥的生成和解密过程,虽然还不是很熟悉,但是以后课后会多加上机练习掌握。
实验过程中遇到了一些问题,那就是签名确认的密钥不知道应该怎样去核对,经过询问同学和上网查找资料,初步掌握密钥的生成和解密的过程。
实验中需要特别注意各个算法的异同,以后要牢记这些要点。