西北农林科技大学信息安全实验三

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

信息工程学院

信息安全原理及应用实验报告实验三基于RSA的公钥加密

班级:计算机XX

学号:XXXXXXX

姓名:XXXXX

指导老师:XXXXX

一、实验目的

1.理解公钥密码算法,熟悉常用密码算法:RSA、椭圆曲线密码体制;

2.理以RSA加密算法为例,掌握公钥密码算法加解密过程的实现。

二、实习内容

1.[基本要求]

以RSA为例,利用java中的相关类实现对指定字符串的加解密。

2.[实现提示]

(1) 可以利用java中的KeypairGenerator类创建公钥密钥对,工厂类KeypairGenerator的静态方法getInstance()可以获得KeypairGenerator类型对象。

(2) 方法getInstance()的参数为字符串类型,指定加密算法的名称如:RSA。

(3) 利用工厂类Cipher的对象创建密码器。同样的,getInstance()的参数为字符串类型,指定加密算法的名称。

(4) JSDK1.2中只是实现了RSA密钥创建,没有实现RSA算法,因此需要安装其他加密软件提供者的软件包,才能直接使用Cipher类执行加解密。

(5) RSA算法是使用整数进行加密运算的,RSA的公钥中包含两个信息:公钥对应的整数e和用于取模的整数n。对于明文m计算密文的公式是me mod n。java中的BigInteger类中定义的modPow()方法可以计算me mod n。

(6) RSA的私钥中包含两个信息:私钥对应的整数d和用于取模的整数n。计算明文的公式是:Ce mod n。

三、测试数据和预期结果

1.测试数据:

明文:Hello UserB !

e = 65537

n = 901555080980479054261289117105730288186307404340275543727489749127530630 35513699150577829243362139796437472252024998435422860371393397734043000574146477 68543333727492209741866234257107358707242966203478045985545791031927570585306342

8389277947471782777251917943575355289890002087854701934153204294157020784747 2.预测结果:

m =112538405354885716280897067137139232297231576752176647999066079730260155 78815420520321236527400219496525363940515236822159671810260812132516608590481840 36758521893489581581433386918313849576468061274982515391027453264874832020421683 3296167081023385937007859365228073517478723018190901085831856225136435773586

d = 252072803208665306472433309151248940304345589165375422482910755191920156 10460549357388774937140361164379209325207227540636411392731016373630223271139357 26016089834784661822455773549939997197024299291618449630366974385474683592001671 7183151204857451734643665107085662188516607520806177363202710556814157473153

n = 901555080980479054261289117105730288186307404340275543727489749127530630 35513699150577829243362139796437472252024998435422860371393397734043000574146477 68543333727492209741866234257107358707242966203478045985545791031927570585306342 8389277947471782777251917943575355289890002087854701934153204294157020784747

解密:Hello UserB !

四、算法分析和流程图

1、RSA算法的加密解密

基础过程分为三个:生成RSA公钥和私钥、使用公钥加密、使用密钥解密。

1.1生成RSA公钥和私钥

Java 的KeyPairGenerator 类提供了一些方法来创建密钥对以便用于非对称加密,密钥对创建好后封装在KeyPair 类型的对象中,在KeyPair 类中提供了获取公钥和私钥的方法。具体步骤如下:

1.1.1创建密钥对生成器

KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");

1.1.2初始化密钥生成器

kpg.initialize(1024);

对于密钥长度。对于RSA 算法,这里指定的其实是RSA 算法中所用的模的位数。可以在512 到2048 之间。

1.1.3生成密钥对

KeyPair kp=kpg.genKeyPair( );

一对公钥和私钥的信息。

1.1.4获取公钥和私钥

相关文档
最新文档