RSA算法实验报告

上传人:s9****2 文档编号:505335931 上传时间:2023-06-19 格式:DOCX 页数:18 大小:62.70KB
返回 下载 相关 举报
RSA算法实验报告_第1页
第1页 / 共18页
RSA算法实验报告_第2页
第2页 / 共18页
RSA算法实验报告_第3页
第3页 / 共18页
RSA算法实验报告_第4页
第4页 / 共18页
RSA算法实验报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《RSA算法实验报告》由会员分享,可在线阅读,更多相关《RSA算法实验报告(18页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上实验二 非对称密码算法RSA一、实验目的通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。二、实验环境运行Windows或Linux操作系统的PC机,具有JDK1.6版本的Java语言编译环境。三、实验内容和步骤1. 对RSA算法的理解RSA算法(公开密钥算法)的原理:(1) 选择两个大的素数p和q(典型情况下为1024位)(2) 计算n = p * q 和 z =(p-1)*(q-1).(3) 选择一个与z互素的数,将它称为d(4) 找到e,使其满足e*d = 1 mod z提前计算出这些参数以后,我们就可以开始执行加密了。首先将明文

2、分成块,使得每个明文消息P落在间隔0*Pn中。为了做到这一点,只要将明文划分成k位的块即可,这里k是满足2kn的最大整数。为了加密一个消息P,只要计算C=Pe(mod n) 即可。为了解密C,只要计算P=Cd(mod n)即可。可以证明,对于指定范围内的所有P,加密盒解密互为反函数。为了执行加密,你需要e和n;为了执行解密,你需要d和n。因此,公钥是有(e,n)对组成,而私钥是有(d,n)对组成。实例:根据已知参数:p=3,q=11,M=2,计算公私钥,并对明文进行加密,然后对密文进行解密。由题意知:n = p * q33,z =(p-1)*(q-1)20,选d7,计算得e=3,所以C=Me(

3、mod n)8M=Cd(mod n)22、RSA算法与DES算法的比较:运行附件的RSATool,输入一大段文字,记录运行时间。再使用DES算法加密相同的文字,记录运行时间,对比这两个时间发现,RSA算法比DES算法慢很多,因为RSA算法进行的是大数运算,所以程序运行的速度比DES慢很多。因此RSA算法只适合于少量数据加密,不适合于大量数据加密。3、算法设计主要的方法:(1)、public static void GetPrime()方法名称:产生大数的方法。说明:利用Java语言的中的java.math.BigInteger类的方法中随机产生大数。(2)、public static bool

4、ean MillerRobin(BigInteger num)方法名称:判断是否是素数的方法。参数说明:num是由GetPrime方法产生的大数。说明:这个方法判断GetPrime方法传过来的是否是一个素数,是就返回true,否就返回false。(3)、public static BigInteger powmod( BigInteger a, BigInteger t, BigInteger num )方法名称:大数的幂运算方法。说明:这个方法对传入的大数进行幂运算。(4)、public static BigInteger invmod(BigInteger a, BigInteger b)

5、方法名称:大数的取模运算方法。说明:这个方法对大数进行取模运算。(5)、public static String Encode(String inStr,BigInteger PrimeP,BigInteger PrimeQ, BigInteger n,int nLen,int m,JTextField d)方法名称:加密算法。参数说明:inStr是从界面输入的明文。PrimeP和PrimeQ是由GetPrime方法产生的两个大素数。n是由PrimeP和PrimeQ得到的值。nLen为n的长度。d为公钥。(6)、public static String Decode(String inStr,

6、BigInteger PrimeP,BigInteger PrimeQ, BigInteger n,int nLen,int m,JTextField e)方法名称:解密算法。参数说明:inStr是从界面输入的明文。PrimeP和PrimeQ是由GetPrime方法产生的两个大素数。n是由PrimeP和PrimeQ得到的值。nLen为n的长度。e为私钥。4、源程序:(RSA1.java文件)import javax.swing.*; import java.awt.event.*; import java.math.*; import java.util.*; import java.awt.

7、*; import java.io.*; public class RSA1 public static void main(String args) MyFrame frame = new MyFrame(); MyPanel_fbutton panel_fbutton = new MyPanel_fbutton(frame,frame.P,frame.Q,frame.d,frame.e); FlowLayout fl = new FlowLayout (FlowLayout.CENTER,0,0); frame.setLayout(fl); frame.add(panel_fbutton)

8、; frame.setBounds( 150, 100, 500, 480 ); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); class MyFrame extends JFrame public MyFrame() setTitle(RSA算法); add(wel); MyPanel_p panel_p = new MyPanel_p(P); add(panel_p); MyPanel_q panel_q = new MyPanel_q(Q); add(panel_q); MyPa

9、nel_d panel_d = new MyPanel_d(d); add(panel_d); MyPanel_e panel_e = new MyPanel_e(e); add(panel_e); MyPanel_in panel_in = new MyPanel_in(input); add(panel_in); MyPanel_out panel_out = new MyPanel_out(output); add(panel_out); MyPanel_out1 panel_out1 = new MyPanel_out1(output1); add(panel_out1); MyPan

10、el_button panel_button = new MyPanel_button(P,Q,d,e,input,output,output1); add(panel_button); private JLabel wel = new JLabel( RSA算法演示 ); protected JTextField P = new JTextField(35); protected JTextField Q = new JTextField(35); protected JTextField d = new JTextField(35); protected JTextField e = ne

11、w JTextField(35); protected JTextArea input = new JTextArea(4,35); protected JTextArea output = new JTextArea(4,35); protected JTextArea output1 = new JTextArea(4,35); class MyPanel_fbutton extends JPanel public MyPanel_fbutton(Frame aframe,JTextField aP, JTextField aQ, JTextField ad, JTextField ae)

12、 frame = aframe; P = aP; Q = aQ; e = ae; d = ad; private Frame frame; private JTextField P; private JTextField Q; private JTextField d; private JTextField e; class MyPanel_p extends JPanel public MyPanel_p(JTextField aP) P=aP; add(new JLabel( 质数 P:); add(P); private JTextField P; class MyPanel_q extends JPanel public MyPanel_q(JTextField aQ) Q=aQ; add(new JLabel( 质数 Q:); add(Q); private JTextField Q; class MyPanel_d extends JPanel public MyPanel_d(JTextField ad)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号