密码学实验(RSA完整算法)

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

密码学实验

——RSA算法实现

姓名:

班级:

学号:

教师:

助教:

一.程序功能函数定义

①p ublic static String toHexString(byte[] b)

——格式转换函数

②p ublic KeyPair generateKey() throws

NoSuchAlgorithmException

——密钥对生成函数

③p rotected byte[] PKCS1Ecryption(RSAPublicKey

publicKey, String Data)

——PKCS1机制下RSA加密函数

④p rotectedbyte[] PKCS1DeEcryption

(RSAPrivateKey

privateKey, byte[] raw)

——PKCS1机制下RSA解密密函数

⑤p rotected byte[] OAEPEcryption(RSAPublicKey

publicKey, String Data)

——OAEP机制下RSA加密函数

⑥p rotectedbyte[] OAEPDeEcryption

(RSAPrivateKey

privateKey, byte[] raw)

——OAEP机制下RSA解密密函数

⑦p ublic static void main(String[] args)

——主函数(Main)

二.程序功能函数说明(含返回、参数)《1》public KeyPair generateKey() throws

NoSuchAlgorithmException

A.入口参数:无

B.返回类型:KeyPair类(JAVA库类)——密钥对

C.函数功能:利用系统随机源(且这里指定密钥长度为

512bit)与指定的算法类(RSA)构造一对密钥对《2》protected byte[] PKCS1Ecryption(RSAPublicKey publicKey, String Data)

A.入口参数:RSA公钥类publickey和字符串类data

B.返回类型:字节数组类——密文形式

C.函数功能:能将原明文首先转化成字节数组形式,并

且利用加密库Cipher与Security指定PKCS1机制下的

RSA加密算法对明文加密并且以字节数组的形式返回

加密后得到的密文

《3》protected byte[] OAEPEcryption(RSAPublicKey publicKey, String Data)

A.入口参数:RSA公钥类publickey和字符串类data

B.返回类型:字节数组类——密文形式

C.函数功能:能将原明文首先转化成字节数组形式,并

且利用加密库Cipher与Security指定OAEP机制下的

RSA加密算法对明文加密并且以字节数组的形式返回

加密后得到的密文

《4》protected byte[] PKCS1DeEcryption

(RSAPrivateKey privateKey, byte[] raw)

A.入口参数:RSA私钥类privatekey和字节数组类raw

B.返回类型:字节数组类——明文形式

C.函数功能:利用加密库Cipher与Security指定PKCS1

机制下的RSA解密算法对密文解密并且以字节数组

的形式返回解密后得到的明文

《5》protected byte[] OAEPDeEcryption

(RSAPrivateKey privateKey, byte[] raw)

A.入口参数:RSA私钥类privatekey和字节数组类raw

B.返回类型:字节数组类——明文形式

C.函数功能:利用加密库Cipher与Security指定OAEP

机制下的RSA解密算法对密文解密并且以字节数组

的形式返回解密后得到的明文

《6》public static String toHexString(byte[] b)

A.入口参数:字节数组

B.返回类型:字符串

C.函数功能:将任意的字节数组转换成ASCII码形式的

(十六进制)字符串,便于在屏幕上显示和方便阅读《7》public static void main(String[] args)

A.入口参数:字符串(主函数只可一次调用)

B.返回类型:无

C.函数功能:提供用户手动输入,由用户指定需要加密

的明文和加密的机制(3项选择),生成密钥对并对明

文加密再对密文解密,最后全部显示出来供用户审阅三.编程关键与疑难解决

本次编程实验重在掌握加密库的使用,这里JAVA (JDK1.7)提供了两大库——Cipher与Security,正确利

用它们进行RSA加密是本实验的关键所在

老实说,由于这两大库内容很多比较复杂,自己慢慢研究是很费时间的,于是我在网上查找文档和资料,需求论坛高手解答,最终确定主要用到以下库类:

java.security.KeyPair;

java.security.KeyPairGenerator;

java.security.NoSuchAlgorithmException;

java.security.SecureRandom;

java.security.interfaces.RSAPrivateKey;

java.security.interfaces.RSAPublicKey;

java.util.Scanner;

javax.crypto.Cipher;

确认了库类后,就可以根据eclipse提示正确找到JDK1.7提供的RSA加密函数了,接下来操作就是搞懂每

个库函数的用法即可了!

相关文档
最新文档