《密码学实验(RSA完整算法).docx》由会员分享,可在线阅读,更多相关《密码学实验(RSA完整算法).docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、密码学实验RSA算法实现姓名: 班级:学号:教师: 助教: 一 程序功能函数定义 public static String toHexString(byte b)格式转换函数 public KeyPair generateKey() throws NoSuchAlgorithmException密钥对生成函数 protected byte PKCS1Ecryption(RSAPublicKey publicKey, String Data)PKCS1机制下RSA加密函数 protected byte PKCS1DeEcryption(RSAPrivateKey privateKey, byte
2、 raw)PKCS1机制下RSA解密密函数 protected byte OAEPEcryption(RSAPublicKey publicKey, String Data)OAEP机制下RSA加密函数 protected byte OAEPDeEcryption(RSAPrivateKey privateKey, byte raw)OAEP机制下RSA解密密函数 public static void main(String args)主函数(Main)二 程序功能函数说明(含返回、参数)1 public KeyPair generateKey() throws NoSuchAlgorithm
3、ExceptionA. 入口参数:无B. 返回类型:KeyPair类(JAVA库类)密钥对C. 函数功能:利用系统随机源(且这里指定密钥长度为512bit)与指定的算法类(RSA)构造一对密钥对2 protected byte PKCS1Ecryption(RSAPublicKey publicKey, String Data)A. 入口参数:RSA公钥类publickey和字符串类dataB. 返回类型:字节数组类密文形式C. 函数功能:能将原明文首先转化成字节数组形式,并且利用加密库Cipher与Security指定PKCS1机制下的RSA加密算法对明文加密并且以字节数组的形式返回加密后得
4、到的密文3 protected byte OAEPEcryption(RSAPublicKey publicKey, String Data)A. 入口参数:RSA公钥类publickey和字符串类dataB. 返回类型:字节数组类密文形式C. 函数功能:能将原明文首先转化成字节数组形式,并且利用加密库Cipher与Security指定OAEP机制下的RSA加密算法对明文加密并且以字节数组的形式返回加密后得到的密文4 protected byte PKCS1DeEcryption(RSAPrivateKey privateKey, byte raw)A. 入口参数:RSA私钥类privatek
5、ey和字节数组类rawB. 返回类型:字节数组类明文形式C. 函数功能:利用加密库Cipher与Security指定PKCS1机制下的RSA解密算法对密文解密并且以字节数组的形式返回解密后得到的明文5 protected byte OAEPDeEcryption(RSAPrivateKey privateKey, byte raw)A. 入口参数:RSA私钥类privatekey和字节数组类rawB. 返回类型:字节数组类明文形式C. 函数功能:利用加密库Cipher与Security指定OAEP机制下的RSA解密算法对密文解密并且以字节数组的形式返回解密后得到的明文6 public stat
6、ic String toHexString(byte b)A. 入口参数:字节数组B. 返回类型:字符串C. 函数功能:将任意的字节数组转换成ASCII码形式的(十六进制)字符串,便于在屏幕上显示和方便阅读7 public static void main(String args)A. 入口参数:字符串(主函数只可一次调用)B. 返回类型:无C. 函数功能:提供用户手动输入,由用户指定需要加密的明文和加密的机制(3项选择),生成密钥对并对明文加密再对密文解密,最后全部显示出来供用户审阅三 编程关键与疑难解决本次编程实验重在掌握加密库的使用,这里JAVA(JDK1.7)提供了两大库Cipher与
7、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加密函数了,接下来操作就是搞懂每个库函数的用法即可了! 四 程序运行结果截图(部分)