实验四 公钥加密算法实验(改)
公钥密码算法
公钥密码算法
公钥密码算法是一种非对称加密算法,它使用一对公钥和私钥来加密和解密信息。
公钥密码算法的基本原理是:用户A将
要发送的信息使用用户B的公钥进行加密,然后发送给用户B,用户B收到信息后,使用自己的私钥进行解密,从而获得
原始信息。
公钥密码算法的安全性主要取决于公钥和私钥的安全性,因此,在使用公钥密码算法之前,需要先生成公钥和私钥。
一般来说,生成公钥和私钥的过程可以分为以下几个步骤:
1. 选择一个大质数p和一个小质数q,并计算出n=pq;
2. 选择一个大于1小于n的整数e,使得e与(p-1)(q-1)互质;
3. 计算出d,使得ed=1 mod (p-1)(q-1);
4. 将公钥(n,e)和私钥(n,d)发布出去。
在使用公钥密码算法进行加密时,可以使用以下步骤:
1. 将要发送的信息m转换成一个整数M,使得0<M<n;
2. 计算出密文C,C=M^e mod n;
3. 将密文C发送给接收方。
在使用公钥密码算法进行解密时,可以使用以下步骤:
1. 接收方收到密文C后,计算出明文M,M=C^d mod n;
2. 将明文M转换成原始信息m。
公钥密码算法的安全性取决于公钥和私钥的安全性,因此,在使用公钥密码算法时,应该采取有效的措施来保护公钥和私钥,以防止被攻击者破解。
例如,可以采用数字签名技术来验证公钥和私钥的真实性,以及采用加密技术来保护公钥和私钥,以防止被攻击者窃取。
实验四 公钥密码【甄选文档】
实验四公钥密码深圳大学实验报告课程名称:计算机安全导论实验项目名称:公钥密码实验学院:计算机与软件学院专业:软件工程指导教师:陈飞报告人:学号:班级:实验时间:实验报告提交时间:教务部制公钥密码体制又称为非对称密码体制,加解密使用公私钥密钥对,私钥由密钥拥有者保管,公钥可以公开,基于公开渠道进行分发,解决了对称密钥体制中密钥管理、分发和数字签名等难题。
RSA算法RSA公钥算法由Rivest、Shamir、Adleman于1978年提出的,是目前公钥密码的国际标准。
算法的数学基础是Euler定理,是基于Deffie-Hellman的单项陷门函数的定义而给出的第一个公钥密码的实际实现,其安全性建立在大整数因子分解的困难性之上。
RSA算法的[明文空间M] = [密文空间C] = [Z n整数] ,其算法描述如下:(1)密钥生成随机选择两个大素数p和q,计算n=p•q,;选择一个随机整数e<,满足,计算整数;公开公钥(n,e),安全的销毁p、q 和,并保留(d,n)作为私钥。
(2)加密(3)解密使用中国剩余定理可以加速RSA密码算法的实现。
实验内容:1、实现RSA的加解密计算2、RSA算法实现,重点实现扩展的欧几里得算法,幂指数算法,及加解密算法实验步骤与结果:1.实现RSA的算法1.1 扩展欧几里得算法的实现1.2 快速幂算法的实现1.3 密钥生成算法1.4 RSA主算法2.运行截图实验结论:注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。
感谢您使用本店文档您的满意是我们的永恒的追求!(本句可删)------------------------------------------------------------------------------------------------------------。
信息安全技术实验四 公钥加密实验
信息安全技术实验四公钥加密实验一实验目标请大家使用MFC完成程序的调试和实验内容。
二实验内容1 RSA简介1)公钥加密算法:加密使用一个密钥(公钥),解密使用另一个密钥(私钥),这样的算法称为公钥加密算法。
2)RSA介绍RSA是目前使用最广泛的公钥加密算法,是Rivest, Shamir,Adleman (RSA) 三个人,1977年发明出来的。
是最典型的公钥密码体制算法基于单向陷门函数的原理。
以模幂运算为基本运算。
安全性基于大数因子分解的困难性(将一个充分大的正整数分解成两个素数之积几乎是不可能的)。
数学基础是著名的欧拉(Euler)数论。
2 RSA的实现1)RSA数学表达1.1)RSA初始化步骤a)对于每个用户都生成自己的公钥\私钥对:b)选择两个随机大素数(~100 digit,10进制), p, qc)计算模数N=p.qd)选择一个随机加密密钥匙e : e<N, gcd(e,ø(N))=1e)解下列同余方程,求解密密钥d:f) e.d=1 mod ø(N) and 0<=d<=Ng)私钥是{d,p,q},是自己保留的,秘密的h)公钥是K={e,N},是公开发布的,任何人都可以获得。
1.2) RSA加密过程a)要加密消息M,发送者要得到接收者的公钥Kr={er,Nr} (注释r=receiver)b)计算: C=M er mod Nr, where 0<=M<Nc)将密文C发送给接收者1.3)RSA解密过程a)为解密C,接收者使用私钥K-1r={d,p,q}b)计算得出: M=C d mod Nr1.4)其中,私钥d的计算可以使用下列公式对满足方程a x ≡ 1 mod r的X:x=aφ(r)-1 mod r2)RSA的算法程序:2.1) 在RSA加解密算法Dlg.h文件中定义了p,q,n,e,d等变量public:CBigInt Q;CBigInt P;CBigInt N;CBigInt E;CBigInt D;2.2) 主体代码,实现数据的RSA加密//RSA加密void CRSADlg::OnOK(){ if(ready==0){m_OUT=_T("请先输入或生成N、D、E");UpdateData(FALSE);return;}UpdateData(TRUE);if(m_IN.GetLength()>256){m_OUT=_T("N不得大于256位");UpdateData(FALSE);return;}for(int i=0;i<m_IN.GetLength();i++){if((m_IN[i]<'0')||((m_IN[i]>'9')&&(m_IN[i]<'A'))||((m_IN[i]>'F')&&(m_IN[i]<'a'))||(m_IN[i]>'f')){m_OUT=_T("待加密数据必须为0-9或A-F或a-f组成的整数");UpdateData(FALSE);return;}}P.Get(m_IN);if(P.Cmp(N)>=0){m_OUT=_T("待加密数据必须小于N");UpdateData(FALSE);return;}Q.Mov(P.RsaTrans(E,N));//RSA加密实现,调用P.RsaTrans(E,N) 把P加密成Q,P是明文,Q是密文Q.Put(m_OUT); //Q输出赋值给变量m_OUT, 这个是与界面中的加密/解密输出结果文本框对应的变量UpdateData(FALSE); //FALSE表示,把m_OUT的值输出到界面显示。
加密基本算法实验报告
一、实验目的1. 理解并掌握加密的基本原理和常用算法。
2. 学会使用编程语言实现简单的加密和解密过程。
3. 提高对网络安全和信息安全重要性的认识。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 工具:PyCharm三、实验内容本次实验主要涉及以下加密算法:1. 仿射密码2. 单表代替密码3. 维吉尼亚密码4. RSA算法四、实验步骤及结果1. 仿射密码(1)原理简介:仿射密码是一种基于线性代数的加密方法,其加密公式为 \(c = (ap + b) \mod 26\),其中 \(a\) 和 \(b\) 是密钥,\(p\) 是明文字符对应的数字,\(c\) 是密文字符对应的数字。
(2)代码实现:```pythondef affine_encrypt(plain_text, a, b):cipher_text = ''for char in plain_text:if char.isalpha():p = ord(char.lower()) - ord('a') c = (a p + b) % 26cipher_text += chr(c + ord('a')) else:cipher_text += charreturn cipher_textdef affine_decrypt(cipher_text, a, b):cipher_text = cipher_text.lower()a_inv = pow(a, -1, 26)plain_text = ''for char in cipher_text:if char.isalpha():c = ord(char) - ord('a')p = (a_inv (c - b)) % 26plain_text += chr(p + ord('a')) else:plain_text += charreturn plain_text```(3)测试结果:明文:HELLO WORLD密文:RQWKHU WHDP解密:HELLO WORLD2. 单表代替密码(1)原理简介:单表代替密码是一种将明文字符映射到密文字符的加密方法,其中每个明文字符只对应一个密文字符。
实验4_公钥密码RSA加解密算法模拟程序
实验四:公钥密码RSA加解密算法模拟程序
一、实验目的
1、编写简单的RSA加解密程序。
2、理解公钥密码体系的相关知识,尤其是RSA算法的加密与解密计算过程。
二、实验内容
编写程序实现RSA加解密算法,并通过demo验证算法的正确性。
具体要求如下:
1)能够对指定字符串加密并对加密后的密文进行解密,通过对比解密后的字符串与源字符串,证明程序加密与解密的正确性。
2)输出与加解密相关的各项参数,例如公钥、私钥、通过乘积运算构成大整数的两个素数等。
三、实验步骤及实验结果
1、实验步骤如下:
1)利用参考代码在VS2008开发工具编中写一个控制台程序
2)经过编译、链接生成可执行程序,运行程序,结果显示为:(因为调用Random函数,所以每次运行的结果都会不一样)
3)此外生成界面如下,输入明文
过乘积运算构成大整数的两个素数
5)按下“加密”,得到加密的密文;按下“解密”,得到解密的明文
四、实验结果分析
通过编写模拟RSA的加密与解密的程序,成功加密明文,得到加密的密文,并且解密后得到相应明文。
五、实验心得体会
通过学习的相应的RSA的加密与解密的知识,学会了RSA的加密解密的具体步骤。
同时了解了相关加密解密的过程。
公钥密码算法
公钥密码算法学号:0900250114 姓名:李荣亮摘要:古往今来,通信中的安全保密问题一直受到广泛关注。
历史上,交战双方在通信安全、保密和密码破译方面的优势均被认为是取得战争胜利的关键因素之一。
今天,随着互联网的发展,人类进入信息化时代,现代通信涉及各个行业,信息安全已成为人人都关心的问题,敏感信息的安全传输越来越受到人们的关注,这就促使密码学揭去了神秘的面纱,为更广泛的领域和大众服务。
一、公钥密码学概述。
公开密钥密码算法的提出是整个密码学历史上最大的而且也许是最唯一真正的变革。
从最初一直到现代,几乎所有密码系统都建立在基本的替代和置换工具的基础上。
在用了数千年的本质上可以手算完成的算法之后,常规的密码学随着转轮加密/解密机的发展才出现了一个重大进步。
机电式变码旋转软件使得极其复杂的密码系统被研制出来。
有了计算机后,更加复杂的系统被设计出来。
但是不管是转轮机还是后来的DES(数据加密标准),虽然代表了重要的进展,却仍然依赖于替代和置换这样的基本工具。
公钥密码学则与以前的所有方法都截然不同。
一方面公开密钥算法基于数学函数而不是替代和置换,更重要的是,公开密钥密码学是非对称的,它用到两个不同的密钥,而对称的常规加密则只使用一个密钥。
使用两个密钥对于保密通信,密钥分配和鉴别等领域都有着深远的影响。
公钥密码算法中的密钥依性质划分,可分为公钥和私钥两种。
用户或系统产生一对密钥,将其中的一个公开,称为公钥;另一个自己保留,称为私钥。
任何获悉用户公钥的人都可用用户的公钥对信息进行加密与用户实现安全信息交互。
由于公钥与私钥之间存在的依存关系,只有用户本身才能解密该信息,任何未受授权用户甚至信息的发送者都无法将此信息解密。
在近代公钥密码系统的研究中, 其安全性都是基于难解的可计算问题的。
如:(1)大数分解问题;(2)计算有限域的离散对数问题;(3)平方剩余问题;(4)椭圆曲线的对数问题等。
基于这些问题, 于是就有了各种公钥密码体制。
实验四 公钥密码算法RSA
实验四公钥密码算法RSA1、目的使学生认识理解公钥密码算法的基本原理:认识它和对称算法的基本区别和数学基础知识,掌握RSA的算法过程。
2、环境PC 1 台、VC603、预备知识1.RSA算法过程1.产生钥对(key pair)1-1.找出3个数:p, q, r或u; p, q 是两个相异的质数,gcd[r ,(p-1)(q-1)]=1. 再找出其逆元 r-1≡u% (p-1)(q-1), 即使得 ru ≡1 % (p-1)(q-1)。
u 一定存在(可逆元条件定理)。
(反函数存在性)(32位域的算法演示).1-2.计算 n = pq。
销毁p, q 。
1-3.公开数偶(u, n)为公钥。
(r,u 是可以互换的)1-4.秘管数偶(r, n)为私钥。
2.编码(RSA加密)若资料为 Y, 将其看成是一个大整数, 对于ASCII字串可以看成是256进制的大整数。
假设 Y < n,如果 Y >= n 的话, 就将 Y 按n分组长度进行分组, 则每一分组均小于 n, 然后分段编码,计算 Y I’≡ Y i^u mod n3.解码(RSA解密)计算 Y I’’≡ Y I’^r % pq, 解码完毕。
4、方法和步骤(1)请根据算法的描述和你对算法过程的理解,选用一种编程语言C,C++,Java,Pascal来实现RSA算法,//以学号右4位为明文,//以姓名全拼字串中的最左字符的ASCII码值+128的值为起点寻找最近的素数为P。
//以姓名全拼字串中的最右字符的ASCII码值的值为起点寻找最近的素数为Q。
//u=17,如果u与欧拉值不互质则,比u值大的下一相邻19素数赋给u;依此类推;//计算r;来构造RSA算法;并加解密。
将验证过程写于报告上。
如图所示:示例1输入r:启动RSA(32bit)加密;以时钟为随机种子产生素数!输入l:实验结果验证,RSA(32bit)加密!输入s:实验结果验证,RSA(32bit)签名!输入h:获得命令帮助!输入e:退出程序!请输入指令:lPlease Input your Name String(小写): tanwenxuepchar=116;字符值tqchar=101;字符值e116+128=244;找到素数p=251从101起:找到素数q=101;1-10有无非平凡因子;公钥模:101*251=25351φ((p-1)(q-1))=25000;已知公钥指数u=17;17r≡1 modφ((p-1)(q-1))根据欧拉定理:如gcd(a,n)=1A^φ(n) ≡1 mod n;Gcd(17,25000)=1;可用欧拉定理;求素因子分解式:25000=55*23;φ(25000)=25000*(1/2)(4/5)=10000;17-1=r=179999 mod 25000=7353(可用计算器)Please Input 明文(<10000 的整数!,4位十进制数.): 12317*7353%25000=1plaintext=123ciphertext=7079RSA公钥:u=17 n(pq)=25351RSA私钥:r=7353 n(pq)=25351 decryptciphertext=123正确加解密!请输入指令:sPlease your Name String is (小写): tanwenxuepchar=116;字符值tqchar=101;字符值e找到素数p=251找到素数q=101Please Input 明文(<10000 的整数!,4位十进制数.): 12317*7353%25000=1plaintext=123ciphertext=7079手工:123^17 mod 25351=7079(可用计算器)7079^7353 mod 25351=123RSA公钥:u=17 n(pq)=25351 RSA私钥:r=7353 n(pq)=25351 decryptciphertext=123正确加解密!Please Input 签名消息(<10000 的整数!,4位十进制数.): 123 17*7353%25000=1Message=123SignMessage=10244手工:123^7353 mod 25351=10244(可用计算器)10244^17 mod 25351=123RSA公钥:u=17 n(pq)=25351 RSA私钥:r=7353 n(pq)=25351 VerifyMessage=123签名有效!5、注意1算法要执行32位加密过程和解密过程并对正确性设计验证途径。
公钥密码
实验五公钥密码1、实验目的(1)实现自己的加密解密程序;(2)对密码学的相关知识,尤其是数据加密解密的过程有一个初步的了解。
2、实验要求编写程序,实现RSA加解密过程,要求:(1)程序工作在Windows环境下(2)能够使用RSA加密算法加密指定字符串并对加密后的密文进行解密,并与源字符串进行比对,证明解密无误(3)必须输出加密相关的各项参数,如公钥,私钥,通过乘积构成大整数的两个素数等3、实验条件微机一台、Visual Studio 6.0集成开发环境。
4、实验相关知识传统对称密码体系组成:明文:作为算法的输入,原始可理解的消息或者数据;加密算法:加密算法对明文进行各种代换和变换;密文:作为算法的输出,看起来完全随机而杂乱的数据,依赖明文和密钥。
对于给定的消息,不同的密钥将产生不同的密文,密文是随机的数据流,并且其意义是无法理解的;密钥:密钥也是加密算法的输入,密钥独立于明文,算法将根据所用的特定密钥而产生不同的输出。
算法所用的代换和变换也依靠密钥;解密算法:加密算法的逆。
输入密文和密钥可以用解密算法恢复出明文。
体系结构:传统非对称密码体系组成:(1)明文:作为算法的输入,原始可理解的消息或者数据;(2)加密算法:加密算法对明文进行各种代换和变换;(3)密文:作为算法的输出,看起来完全随机而杂乱的数据,依赖明文和密钥。
对于给 定的消息,不同的密钥将产生不同的密文,密文是随机的数据流,并且其意 义是无法理解的;(4)公钥和私钥:算法输入的一部分,公钥和私钥成对出现,一个用来加密,另一个用 来解密,加密算法执行的变化依赖与公钥和私钥 ;(5)解密算法:该算法用来接收密文和相应的密钥,并产生原始的明文。
体系结构:明文输入密文输出加密算法解密算法公钥私钥明文输入密文输出加密算法解密算法Key Key 收发方共享5 系统实施5.1程序的主要流程图5.2主要过程生成最大随机数:本模块主要由三个函数构成:第一个函数用来完成Rabin-Miller素数测试,这个函数利用了Femat定理:如果n是素数,an-1≡1 mod n,使用此定理可以大概率确定一个数可能为素数;重复调用Rabin-Miller检验函数确定一个数字是否为素数的函数;生成一个随机的大素数,程序首先生成一个确保最高位是一(确保足够大)的随机奇数,然后,检验该奇数是否是素数,重复该过程直到找到所需的素数为止。
编码理论实验报告实验四加密编码——RSA公钥密码
实验名称实验四加密编码--------RSA公钥密码一、实验目的1. 了解RSA公钥密码进行加密、解密的原理;2. 理解RSA公钥密码进行加密、解密的算法和步骤;3. 正确运用C语言编程实现RSA加密、解密功能。
二、实验内容1. 在Visual C++环境中运用C语言熟练实现RSA加密;2. 在Visual C++环境中运用C语言熟练实现RSA解密。
三、实验原理1. RSA的算法结构相当简单,整个算法可以描述如下:(1)选取两个大素数p和q(保密);(2)计算n=pq(公开),γ=(p一1〉(q-1)(保密);(3)随机选取整数e(公开,加密密钥),使得ed(ear)=1;(4)计算d(保密,私人密钥),使得ed≡1(mod r),即d=e-1(mod r);(5)加密:c=me mod n;(6)解密:m=cd mod n。
2. RSA算法的特点利用RSA对被加密的信息m (长度小于log2n的整数)进行加密得到相应的密文c=me mod n;解密算法则是计算m=cd modn。
RSA的优点是不需要密钥分配,但缺点是速度慢。
RSA的安全基于大数分解的难度。
其公开密钥和私人密钥是一对大素数(100到200个十进制数或更大)的函数。
从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数之积。
3. 相关数论原理(1)剩余系设m>0, Cr = {a | a=r+qm, q∈Z}(r=0,1,...,m-1), 则C,C1,...,Cm-1称为模数m的剩余系。
在C0 ,C1,...,Cm-1中各取一数aj∈Cj,j=0,1,...,m-1,此m个数a0 ,a1,...,am-1称为模数m的一组完全剩余系。
特别地,完全剩余系0,1,...,m-1称为模数m的非负最小完全剩余系。
如果Cj 里面的数与m互素,称Cj为与模数m互素的剩余类。
在与m互素的全部剩余类中,各取一数所组成的集合就称为模数m的一组既约剩余系。
实验四:加密算法DES和RSA的实现.doc
实验(实训)报告项目名称实验四加密算法DES和RSA的实现所属课程名称计算机安全与保密项目类型验证性实验(实训)日期2011年5月17日班级08信息(2)班学号0820400228姓名楼俊指导教师郭柏林浙江财经学院东方学院教务部制实验四:加密算法DES和SDA的实现实验4.1:对称加密算法DES的实现1.实验名称:对称加密算法DES的实现2.实验目的:通过MixedCS软件对实际数据进行加密和解密来了解DES的运行原理3.实验内容:1、直接运行MixedCS.exe ,打开软件的主界面,如图所示2、“浏览文件”按钮,选择要进行DES加密的源文件,成功后在“输出文件”文本框中将自动出现默认的文件名钥”文本框中重新输入相同的4位密钥。
密5、将步骤3的密钥长度设为10位,重复加密过程,此时该软件将自动采用3DES算法进行加密,可以看到加密的时间明显增加了请大家自己试验。
实验4.2:非对称加密算法RSA的实现1.实验名称:非对称加密算法RSA的实现2.实验目的:通过RSATool2v17软件对实际数据进行加密和解密来了解RSA算法的运行原理3.实验原理:(一)、回顾RSA实现的原理i.寻找出两个大素数P和Q。
ii.计算出 N=P*Q和 Z=(p-1)*(Q-1)。
iii.选择一个随机数E(0<E<Z),满足gcd(E,Z)=1。
iv.使用欧几里德扩展算法计算密钥D,即 D=E-1 mod Z。
v.公开(N,E)作为公钥,而(N,D)作为私鈅。
(二)、实例讲解1、选择两个素数P=17,Q=472、计算N=17*47=799;计算Z=(17-1)*(47-1)=736 。
3、选择E=5, 使 gcd(5,736)=14、计算D,D==E-1 mod Z =1, D=589则(799,5)作为公钥,而(799,589)作为私鈅。
设:明文s=19是要进行加密的信息,加密算法为:(19)5 mod 799=797, 解密算法为:(797)589 mod 799=194.实验内容:任务一:验证上述给出的实例进行验证,如下图示在Number Base中选择10作为数制,在 Public Exponent(E)[HEX]中写入E 的值5,在 1st Prime(P)中填入第一个素数17,在2nd Prime(Q)中填入第二个素数47,然后点击 Calc.D 则计算出 N和D。
第4章公钥密码算法
公钥密码体制依赖的基础
• ⑴ 函数是一一映射关系,也就是说,对于每个函数值y,只有 唯一的一个原象x与之对应; • ⑵ 给定x与关键参数k,函数y=fk(x)很容易计算; • ⑶ 给定y,存在某个关键参数k’,在未知k’时,由y计算出x 非常困难,即在未知k’的条件下,逆函数x=f-1k’(y)的计算相 当复杂,实际上是不可行的;在已知k’时,对给定的任何y, 则逆函数x=f-1k’(y)很容易计算;
8
公钥密码系统的特征
• ⑴ 密钥。要满足两点要求:公钥/私钥
(PK/SK)对容易产生,且私钥除了生成密钥
的用户自己知道之外,其他任何人都不可
知;已知公钥PK,无法计算出私钥SK,即
公钥密码系统所要满足的基本条件之一是 从公开密钥无法通过计算得到私有密钥。
9
公钥密码系统的特征
• ⑵ 加密算法E。要满足两点要求:已知公钥PK,对任何明文M, 由E计算出密文C非常容易,即C = EPK(M) 易计算,或者已知 私钥SK,对任何信息M,由E计算数字签名也非常容易,即 C = ESK(M) 易计算。 • ⑶ 解密算法D。要满足两点要求:已知私钥SK,对任何密文C, 由D容易计算出明文M,或者已知公钥PK,对任何用SK所做的 数字签名C,容易通过D计算,得到签名前的信息;但是已知 公钥PK、密文C,以及解密算法D,无法由三者推导出明文M或 者私钥SK。即由公钥、密文和解密算法 ,推导明文和解密密 钥都是计算不可行的。 • 一个设计良好的密码系统,加密算法E和解密算法D应该都是 公开的,该原则同样适用于公钥密码系统,公钥密码系统中 唯一需要保密的就是私钥SK。 10
公钥密码体制加解密过程
假设网络上的两个用户Alice和Bob需要进行秘密
通信,为了防止攻击者Eve窃听信息,Alice和Bob 选择使用公钥密码体制加密传输的信息。Alice是 信息的发送方;Bob是信息的接收方。
信息安全-RSA加密算法实验报告
求出正数d,使其满足e d=1 mod D (n),则将(p,q,d)作为私钥。
3.加密算法对于明文M,由C=Memod n,得到密文C。
4.解密算法对于密文C,由M=Cdmod n,得到明文M
如果窃密者获得了n, e和密文C,为了破解密文必须计算出私钥d,为此需要先分解n为了提高破解难度,达到更高的安全性,一般商业应用要求n的长度不小于1024位,更重要的场合不小于2048位。
实验原理:
公钥密码算法是指一个加密系统的加密密钥和解密密钥是不同的,或者说不能用其中一个推导出另一个。在公钥密码算法的两个密钥中,一个是用于加密的密钥,它是可以公开的,称为公钥;另一个是用于解密的密钥,是保密的,称为私钥。公钥密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证的手段,是现代密码学最重要的发明。
{b=b/2;
a=(a*a)%n;}
else{b=b-1;c1=(c1*a)%n;}}
②根据算法可得明文数据:5438 1364 2925 14571 14303 5746 8805 4588 1144 40
三、数字转化为字符
1将所得的数字数据转化为字符数据:
for(i=0;i<sl;i++)
{int j=0;
①根据导入数据的参数密文c:12423 11524 7243 7459 14303 6127 10964 16399927213629调用,以及 进行求解m:
for(i=0;i<sl;i++)
{char m1[100];
c1=1;j=0;
a=c[i];
b=d;
while(b&体制是目前为止最成功的公钥密码算法,虽然它的安全性还未能得到理论证明,但经过20多年的密码分析和攻击,迄今仍然被实践证明是安全的。
RSA公钥加密实践
文。
(5)进入“加密/解密”页签,单击“导入”按钮,从同组主机的 RSA共享文件夹中将密文导入,点击“解密”按钮,切换到解密模式, 在“私钥d部分”和“私钥n部分”输入自己的私钥,再次点击“解密”按钮进 行RSA解密。
(6)将破解后的明文与同组主机记录的明文比较。
3、 实验总结与体会
本次试验主要考察RSA公钥加密实践原。本次实验较为复杂,加密方式 与前面几种也有很大的不同,在实验过程中需要注意许多细节,比如必 须选择素数等,任何的错误都将导致实验的失败,在老师的帮助和同学 的协助下顺利完成了本次实验,通过这次实验,对RSA公钥加密有了更 深的了解,一些课堂上的疑问也得到了解决。
2、 实验内容及过程
本练习主机A、B为一组,C、D为一组,E、F为一组。 首先使用“快照X”恢复Windows系统环境。 一.RSA生成公私钥及加密解密过程演示
(1)本机进入“密码工具”|“加密解密”|“RSA加密算 法”|“公私钥”页签,在生成公私钥区输入素数p和素数q,这里要 求p和q不能相等(因为很容易开平方求出p与q的值)并且p与q的 乘积也不能小于127(因为小于127不能包括所有的ASCII码,导 致加密失败),你选用的素数p与q分别是:p= 13 ;q= 23 。 (2)单击“随机选取正整数e”下拉按钮,随机选取e,e= 101 。
。 利用生成的私钥d,对生成的密文进行解密:
。
二.RSA加密解密
(1)本机在生成公私钥区输入素数p和素数q,这里要求p和q不能
相等,并且p与q的乘积也不能小于127,记录你输入的素数,p= 13
,q= 23 。
(2)点击“随机选取正整数e:”下拉按钮,选择正整数e,e= 101
。
(3)点击“生成公私钥”按钮生成公私钥,记录下公钥e= 101
实验四RSA加解密算法的实现
实验四RSA加解密算法的实现RSA加解密算法是一种非对称加解密算法,可以用于数据的安全传输与存储。
本实验旨在通过实现RSA加解密算法,进一步了解该算法的原理与实现过程。
1.RSA算法原理RSA算法基于数论中的欧拉定理和大素数分解难题。
其原理如下:(1)选择两个大素数p和q,并计算它们的乘积n。
(2)计算欧拉函数φ(n)=(p-1)(q-1)。
(3)选择一个小于φ(n)且与φ(n)互质的整数e,作为公钥的指数。
(4) 求解模方程e·d≡1(mod φ(n)),得到整数 d,作为私钥的指数。
(5)公钥为(n,e),私钥为(n,d)。
(6) 加密时,将明文 m 使用公钥加密得到密文 c,即c≡m^e(mod n)。
(7) 解密时,将密文 c 使用私钥解密得到明文 m,即m≡c^d(mod n)。
2.RSA加解密算法实现为了实现RSA加解密算法,我们需要完成以下几个步骤:(1)选取两个大素数p和q,并计算n和φ(n)。
(2)选择一个与φ(n)互质的整数e。
(3) 计算 d,满足e·d≡1(mod φ(n))。
(4)加密明文m,计算密文c。
(5)解密密文c,计算明文m。
3.代码实现以下是RSA加解密算法的Python代码实现:```pythonimport randomdef is_prime(n):if n <= 1:return Falsefor i in range(2, int(n ** 0.5) + 1):if n % i == 0:return Falsereturn Truedef gcd(a, b):while b:a,b=b,a%breturn adef extended_gcd(a, b):if b == 0:return a, 1, 0g, x, y = extended_gcd(b, a % b) return g, y, x - (a // b) * y def generate_keys(:p = random.randint(100, 1000) while not is_prime(p):p+=1q = random.randint(100, 1000) while not is_prime(q):q+=1n=p*qphi_n = (p - 1) * (q - 1)e = random.randint(2, phi_n - 1) while gcd(e, phi_n) != 1:e+=1_, d, _ = extended_gcd(e, phi_n) d = d % phi_nreturn (n, e), (n, d)def encrypt(message, public_key):n, e = public_keycipher_text = []for char in message:cipher = pow(ord(char), e, n)cipher_text.append(cipher)return cipher_textdef decrypt(cipher_text, private_key):n, d = private_keyplain_text = ""for cipher in cipher_text:plain = pow(cipher, d, n)plain_text += chr(plain)return plain_text#测试public_key, private_key = generate_keys message = "Hello RSA!"cipher_text = encrypt(message, public_key) plain_text = decrypt(cipher_text, private_key)print("明文:", message)print("密文:", cipher_text)print("解密后的明文:", plain_text)```4.实验结果与分析运行以上代码,我们可以得到以下结果:```明文: Hello RSA!密文:[852,295,295,247,282,831,425,898,596,898,968,613,851,852,852]解密后的明文: Hello RSA!```可以看到,明文经过加密后得到了一串数字密文,再经过解密后可以得到原始的明文信息。
密码学实验报告
密码学实验报告密码学实验报告:RSA公钥加密算法的实现与应用一、实验目的1. 掌握RSA公钥加密算法的原理;2. 了解RSA公钥加密算法的实现步骤;3. 运用RSA公钥加密算法实现数据的加密和解密;4. 分析RSA公钥加密算法的优缺点及应用场景。
二、实验原理RSA(Rivest-Shamir-Adleman)公钥加密算法是一种非对称加密算法,公钥和私钥是成对出现的。
公钥用于加密,私钥用于解密。
RSA 算法的安全性基于大数分解难题,即对于两个大质数p和q的乘积N=pq,如果N的值很大,则分解N为p和q的乘积是非常困难的。
因此,RSA算法的安全性取决于选择足够大的p和q。
实现RSA算法的步骤如下:1. 选择两个大质数p和q;2. 计算N=pq,计算N的欧拉函数φ(N)=(p-1)(q-1);3. 选择一个整数e,1<e<φ(N),且e和φ(N)互质,e为加密指数(public key);4. 计算e对于φ(N)的模反元素d,即d*e ≡ 1 mod φ(N),d 为解密指数(private key);5. 将p、q、N、e、d公开,其中p、q、φ(N)是保密的。
加密和解密的过程如下:加密:1. 将明文M转换成一个数字m,0≤m<N;2. 加密后的密文C = m^e mod N。
解密:1. 将密文C解密为明文m = C^d mod N。
三、实验过程1. 选择两个大质数p=11,q=13,计算N=pq=143,计算φ(N)=(p-1)(q-1)=120;2. 选择加密指数e=7,计算解密指数d=103;3. 将p、q、N、e、d公开;4. 对明文M='hello world'进行加密,将明文转换成数字m=10315,计算密文C=m^e mod N=49;5. 对密文C=49进行解密,计算明文m=C^d mod N=10315;6. 比较解密后的明文m和原始明文M,确认加密解密过程正确。
公钥密码及kpi实验
公钥密码及kpi实验公钥密码是一种密码学算法,它使用了一对密钥,即公钥和私钥。
公钥用于加密数据,私钥用于解密数据。
这种密码系统的安全性基于数学上的难题,例如大素数分解或离散对数问题。
公钥密码的优势在于它可以提供安全的通信,而无需事先共享密钥。
这使得公钥密码非常适用于安全通信和数字签名等应用场景。
常见的公钥密码算法包括RSA、Diffie-Hellman、椭圆曲线密码等。
KPI(关键绩效指标)实验是一种评估和监测组织绩效的方法。
KPI实验通常包括以下步骤:1. 确定关键绩效指标,根据组织的战略目标和业务需求,确定关键绩效指标,这些指标应该能够反映组织的核心业务绩效。
2. 设定目标,为每个关键绩效指标设定具体的目标值,这些目标应该是可衡量和可实现的,并与组织的战略目标相一致。
3. 数据收集和分析,收集与关键绩效指标相关的数据,并进行分析和解读。
这可以通过内部数据收集、市场调研、客户反馈等方式进行。
4. 比较和评估,将实际数据与设定的目标进行比较和评估,以确定组织在关键绩效指标上的表现。
这可以帮助组织发现问题、制定改进措施,并进行绩效管理和决策。
5. 持续改进,基于实验结果和评估,制定和执行持续改进计划,以提高组织的绩效和竞争力。
通过公钥密码和KPI实验,我们可以实现安全的通信和评估组织绩效。
公钥密码保护了数据的机密性和完整性,而KPI实验则帮助组织了解自身的绩效状况,并采取相应的措施来提升绩效。
这两个领域都是现代社会中非常重要的研究方向,它们对于保障信息安全和组织发展至关重要。
实验四 公钥加密算法实验(改)
实验四公钥加密算法实验1、实验目的掌握消息RSA密钥生成和加密算法的原理。
2、实验环境硬件:ZXBee CC2530 节点板2 块、USB 接口的CC2530 仿真器,PC 机;软件:Windows 7/Windows XP、IAR 集成开发环境、串口监控程序。
3、实验原理RSA算法的关键是生成公钥私钥对。
本实验采用了一个简化的算法,通过一个给定的seed(实验组号)搜索两个不同的素数(100以内),并计算出公钥PubliceKey(e,n)和私钥PrivateKey(d,n)。
RSA加/解密公式为C=P e mod n和P=C d mod n,其中的幂指数运算速度慢,可采用下面的公式进行转换:C=P e mod n=((...((P*P mod n)*P mod n)*P mod n)... ...)*P mod n此外,RSA算法的明文和密文均为0到n-1之间的整数,而一般传送消息的长度单位为字节(8 bits),n 的大小与消息长度难以匹配。
因此,本实验采用如下的特殊处理方法:(1)令选定公钥/私钥的n值小于65536,即n值小于16bits的二进制。
(2)将消息的每个字节(8bits)作为一个明文块。
(3)每个明文块进行RSA加密后,得到的密文块为16bits,用2个字节存放。
即密文的长度为明文的2倍。
(4)接收方收到的密文,按2个字节为一个密文块进行RSA解密,解密后的结果只保留低8bits。
4、实验步骤1)本实验程序可在《指导书》4.4节程序上进行修改,可节约时间。
信道编号不用更改。
5代码:6)修改接收数据函数rfRecvData()。
接收节点不断接收各个发送节点发送的信息,先判断数据的第一个字节是不是本站点,如果是再进行解密。
通过串口显示结果。
5、实验报告要求实验的结果注意观察下列情况,并对比(截图保存)。
1)发送节点发送密文,接收节点接收后显示密文,对应步骤6。
2)发送节点发送密文,接收节点接收后解密并显示明文,对应步骤8。
信息安全技术实验报告-基于GPG4Win的公钥密码算法实验
信息安全技术实验报告姓名:xxx学号:xxxxxxxxxx专业:xxxxx日期:xxxxxxLab3: 基于GPG4Win的公钥密码算法实验一、实验目的了解公钥算法的应用。
通过在GPG4Win软件下做文件加解密、数字签名以及电子邮件的加解密和数字签名实验,来掌握公钥算法在加解密和数字签名方面的应用。
二、实验环境1.Windows 10系统2.Gpg4win3.1.03.Mozilla Thunderbird三、实验内容【结对伙伴】1.GPG4Win的下载、安装并简述GPG4Win的基本功能;Gpg4win是一款非对称加密方式软件。
简单来讲,就是用公钥加密文件,用私钥解密文件。
如果需要发送加密信息,首先获取接收者的公钥,然后利用该公钥加密后传递,对方利用对应的私钥就可解密。
也就是说,公钥是锁,私钥是钥匙。
非对称加密方式很好地解决了传递机密信息的问题。
图1 安装Gpg4win2.文件加解密及签名实现(1)使用Kleopatra生成公私钥对,导出公钥,与结对伙伴互换公钥;图2.1.1 生成公私钥对图2.1.2 与甲互换公钥图2.1.3 与乙互换公钥图2.1.4 导入完成(2)利用结伴伙伴的公钥实现文件加密,并将加密的文件用邮件发送给伙伴,伙伴接收保存文件并利用自己的私钥解密文件。
●与结对伙伴甲的互动:图2.2.1 利用甲的公钥加密文件图2.2.2 利用自己的私钥解密文件●与结对伙伴乙的互动:图2.2.1 利用乙的公钥加密文件图2.2.2 利用自己的私钥解密文件(3)类似的方法可以使用自己的私钥生成文件的数字签名,并将签名文件发送给伙伴,伙伴利用发送方公钥可以验证签名。
图2.3.1 使用自己的私钥生成文件的数字签名图2.3.2 校验来自乙的签名文件图2.3.2 校验来自甲的签名文件3.电子邮件的加解密和数字签名(1)在结对伙伴之间完成与文件加解密和数字签名中类似的过程实现加密邮件的发送和接收。
这里使用雷鸟邮件客户端软件,绑定了网易163邮箱和QQ邮箱。
Cony公钥密码算法实验
北京信息科技大学
信息管理学院
(课程上机)实验报告
#include "stdio.h" #include "math.h" #include "malloc.h" int euclid(int f,int d)
1.实验名称、实验目的、实验内容、实验要求由教师确定,实验前由教师事先填好,然后作为实验报告模版供学生使用;
2.实验准备由学生在实验或上机之前填写,教师应该在实验前检查;
3.实验过程由学生记录实验的过程,包括操作过程、遇到哪些问题以及如何解决等;
4.实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等;
5.源程序、代码、具体语句等,若表格空间不足时可作为附录另外附页。
公钥私钥加密技术及应用(DOC)
公钥私钥加密技术及应用(DOC)得分教师签名批改日期深圳大学实验报告课程名称: 计算机网络技术实验名称: 公钥私钥加密技术及应用学院:专业: 班级:指导教师: 组号:报告人: 学号:实验地点: 实验时间: 实验报告提交时间:教务处制11. 实验目的1(通过本实验,掌握如何用PGP软件进行邮件加密,解密及签名。
2. 实验内容/实验原理在现代社会里,电子邮件和网络上的文件传输已经成为生活的一部分,因而邮件的安全问题也就日益显得突出。
大家都知道在Internet上传输的数据是不加密的,如果你自己不保护自己的信息,第三者就会轻易获知你的所有隐秘。
此外,还有信息认证的问题,如何让收信人确信邮件没有被第三者篡改,这就需要以PGP为代表的数字签名技术。
PGP(PrettyGoodPrivacy),是一个基于RSA公匙加密体系的邮件加密软件。
它不但可以对你的邮件加密以防止非授权阅读,还能加上数字签名从而使收信人确信邮件是由你发出。
让人们可以安全地通讯,而事先不需要任何保密的渠道用来传递密匙。
PGP采用了审慎的密匙管理,一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等。
它不仅功能强大,速度很快,并且源代码是完全免费的。
PGP原理RSA(Rivest,Shamir,Adleman)算法是一种基于“大数不可能质因数分解假设”的公匙体系。
简单地说就是找两个很大的质数,一个公开给世界,一个不告诉任何人。
一个称为“公匙”,另一个叫“私匙”。
这两个密匙是互补的,就是说用公匙加密的密文可以用私匙解密,反过来也一样。
假设甲要寄信给乙,他们互相知道对方的公匙。
甲就用乙的公匙加密邮件寄出,乙收到后就可以用自己的私匙解密出甲的原文。
由于没别人知道乙的私匙,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。
但另一方面由于每个人都知道乙的公匙,他们都可以给乙发信,那么乙就无法确信是不是甲的来信。
这时候就需要数字签名来进行认证。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四公钥加密算法实验
1、实验目的
掌握消息RSA密钥生成和加密算法的原理。
2、实验环境
硬件:ZXBee CC2530 节点板2 块、USB 接口的CC2530 仿真器,PC 机;
软件:Windows 7/Windows XP、IAR 集成开发环境、串口监控程序。
3、实验原理
RSA算法的关键是生成公钥私钥对。
本实验采用了一个简化的算法,通过一个给定的seed(实验组号)搜索两个不同的素数(100以内),并计算出公钥PubliceKey(e,n)和私钥PrivateKey(d,n)。
RSA加/解密公式为C=P e mod n和P=C d mod n,其中的幂指数运算速度慢,可采用下面的公式进行转换:
C=P e mod n=((...((P*P mod n)*P mod n)*P mod n)... ...)*P mod n
此外,RSA算法的明文和密文均为0到n-1之间的整数,而一般传送消息的长度单位为字节(8 bits),n 的大小与消息长度难以匹配。
因此,本实验采用如下的特殊处理方法:
(1)令选定公钥/私钥的n值小于65536,即n值小于16bits的二进制。
(2)将消息的每个字节(8bits)作为一个明文块。
(3)每个明文块进行RSA加密后,得到的密文块为16bits,用2个字节存放。
即密文的长度为明文的2倍。
(4)接收方收到的密文,按2个字节为一个密文块进行RSA解密,解密后的结果只保留低8bits。
4、实验步骤
1)本实验程序可在《指导书》4.4节程序上进行修改,可节约时间。
信道编号不用更改。
5
代码:
6)修改接收数据函数rfRecvData()。
接收节点不断接收各个发送节点发送的信息,先判断数据的第一个字节是不是本站点,如果是再进行解密。
通过串口显示结果。
5、实验报告要求
实验的结果注意观察下列情况,并对比(截图保存)。
1)发送节点发送密文,接收节点接收后显示密文,对应步骤6。
2)发送节点发送密文,接收节点接收后解密并显示明文,对应步骤8。
请回答以下问题:
1)为什么密文的长度与明文的长度不一致?
2)请写出本小组所用的公钥和私钥的值,包括e,d,n的值。
并针对字符'G',列写加密公式和解密公式,手工验算密文是否与步骤6的串口显示结果相同。
(字符'G'的ASCII码为71)3)密钥分配问题。
本实验例程里面,发送方和接收方均已知公钥和私钥。
然而在实际应用中,发送方和接收方针对公钥和私钥应当如何应用才能保证信息的机密性?(提示,发送方是不可能产生公钥或者私钥的,应该在通信前提前拥有接收方的公钥。
)
4)实际应用中为什么不将RSA算法直接用于消息加密?。