RSA算法实现数据加密签名传输与数据解密代码实

1. RSA算法实现数据解密签名的原理浅析:RSA算法实现数据的加解密签名都是通过一对非对称的密钥对(公钥与私钥)来实现的,公钥可对外公开给其他要传输数据给我的人使用,私钥留着我自己对加密的数据进行解密时使用。公钥通常用来加密数据,私钥通常用来解密数据。使用私钥签名主要是为了防止传送的数据被篡改。

2. 废话不多说,直接上代码

项目目录结构:

RSA密钥常量文件

RSA算法实现数据加密签名传输与数据解密代码实

package com.sxy.rsademo.rsa; /** * @Description 密钥相关常量 * @By SuXingYong * @DateTime 2020/7/11 23:35 **/ public class KeyConstant { /** 字符编码 **/ public final static String CHARACTER_ENCODING_FORMAT = "utf-8"; /** 密钥常量 - 密钥采用的算法 **/ public final static String KEY_ALGORITHM = "RSA"; /** 密钥常量 - 签名算法 **/ public final static String SIGN_ALGORITHMS = "MD5withRSA"; /** * 密钥长度,DH算法的默认密钥长度是1024 * 密钥长度必须是64的倍数,在512到65536位之间 **/ public final static int KEY_SIZE = 1024; /** 最大 - 加密字节数组 - 大小 **/ public final static int ENCRYPT_MAX_SIZE = 117; /** 最大 - 解密字节数组 - 大小 **/ public final static int DECRYPT_MAX_SIZE = 128; /** RSA - 模式 - 01 - 加密 **/ public final static String RSA_MODE_01 = "encrypt"; /** RSA - 模式 - 02 - 解密 **/ public final static String RSA_MODE_02 = "decrypt"; /** 公钥 **/ public final static String PUBLIC_KEY = "public.key"; /** 私钥 **/ public final static String PRIVATE_KEY = "private.key"; /** A方 - 原文 **/ public final static String A_ORIGINAL_TEXT = "aOriginalText"; /** B方 - 原文 **/ public final static String B_ORIGINAL_TEXT = "bOriginalText"; /** A方 - 公钥 - 密文 **/ public final static String A_PUBLIC_KEY_CIPHER_TEXT = "aPublicKeyCipherText"; /** A方 - 私钥 - 密文 **/ public final static String A_PRIVATE_KEY_CIPHER_TEXT = "aPrivateKeyCipherText"; /** A方 - 公钥 - 明文 **/ public final static String A_PUBLIC_KEY_PLAIN_TEXT = "aPublicKeyPlainText"; /** A方 - 私钥 - 明文 **/ public final static String A_PRIVATE_KEY_PLAIN_TEXT = "aPrivateKeyPlainText"; /** B方 - 公钥 - 密文 **/ public final static String B_PUBLIC_KEY_CIPHER_TEXT = "bPublicKeyCipherText"; /** B方 - 私钥 - 密文 **/ public final static String B_PRIVATE_KEY_CIPHER_TEXT = "bPrivateKeyCipherText"; /** B方 - 公钥 - 明文 **/ public final static String B_PUBLIC_KEY_PLAIN_TEXT = "bPublicKeyPlainText"; /** B方 - 私钥 - 明文 **/ public final static String B_PRIVATE_KEY_PLAIN_TEXT = "bPrivateKeyPlainText"; /** A方 - 私钥 - 签名 - 原文 **/ public final static String A_PRIVATE_KEY_SIGN_ORIGINAL_TEXT = "aPrivateKeySignOriginalText"; /** A方 - 私钥 - 签名 - 密文 **/ public final static String A_PRIVATE_KEY_SIGN_CIPHER_TEXT = "aPrivateKeySignCipherText"; /** B方 - 私钥 - 签名 - 原文 **/ public final static String B_PRIVATE_KEY_SIGN_ORIGINAL_TEXT = "bPrivateKeySignOriginalText"; /** B方 - 私钥 - 签名 - 密文 **/ public final static String B_PRIVATE_KEY_SIGN_CIPHER_TEXT = "bPrivateKeySignCipherText"; /** 私钥 - 签名 - 合法性 **/ public final static String PRIVATE_KEY_SIGN_VERIFY = "privateKeySignVerify"; /** 公钥文件存储路径 **/ public final static String PUBLIC_KEY_FILE_ULR = "d:/upload/rsaKey/publicKey.keystore"; /** 私钥钥文件存储路径 **/ public final static String PRIVATE_KEY_FILE_ULR = "d:/upload/rsaKey/privateKey.keystore"; /** 密钥名称和值的分隔符 **/ public final static String KEY_AND_VALUE_SEPARATOR = "==>"; /** 公钥文件存储路径 - 键名 **/ public final static String PUBLIC_KEY_FILE_SAVE_PATH = "publicKeyFile.savePath"; /** 私钥钥文件存储路径 - 键名 **/ public final static String PRIVATE_KEY_FILE_SAVE_PATH = "privateKeyFile.savePath"; }

KeyConstant.java

RSA工具类:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7465a0bce2263cbc0d8e543992cf0ce5.html