# rsa-tools **Repository Path**: jsd1207lh/rsa-tools ## Basic Information - **Project Name**: rsa-tools - **Description**: 基于rsa非对称加密算法,实现的加密工具 1.可以用于接口数据交互 2.项目lisence加密认证 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 2 - **Created**: 2020-09-04 - **Last Updated**: 2022-07-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rsa-tools #### 介绍 基于rsa非对称加密算法,实现的加密工具 1.可以用于接口数据交互; 2.项目lisence加密认证; #### maven 打包命令 ``` mvn package clean ``` #### 逻辑说明 * 1.服务提供商和服务调用商相互提供公钥(私钥自己留存,切记不可提供) * 2.服务调用商:服务调用商使用自身私钥对数据进行加密,同时使用服务提供商给予的公钥生成数字签名sign,一并交付服务提供商 * 3.服务提供商:根据调用方提供的加密数据使用自身私钥对数据进行解密,同时使用服务调用方提供的公钥对签名进行效验,true为认证通过,false反之 #### 代码说明 * 1.密钥对生成方法 ``` /**生成密钥对*/ Keys keys = GeneratorKey.genKeyPair(); System.out.println("私钥:" + keys.getPriKey()); System.out.println("公钥:" + keys.getPubKey()); ``` * 2.服务调用商关注代码 ``` String data = "我是待加密的数据"; /**使用服务提供商给予的公钥,对数据进行RSA加密*/ String encryptData = EncryptTools.dataEncrypt(data, RasCommon.PROVIDER_PUBLIC); System.out.println("加密后内容:" + encryptData); /**使用自身私钥实现数据签名加密,RSA签名*/ String sign = EncryptSign.sign(data, RasCommon.CALLER_PRIVATE); ``` * 3.服务提供商关注代码 ``` /**服务提供商使用自身私钥对数据进行解密,RSA解密*/ String decryptData = DecryptTools.dataDecrypt(encryptData,RasCommon.PROVIDER_PRIVATE); System.out.println("解密后内容:" + decryptData); /** 服务提供商根据服务调用商给予的公钥对数据进行验签,RSA验签 */ boolean result = ValiditySign.dataVerify(data, RasCommon.CALLER_PUBLIC, sign); System.out.print("验签结果:" + result); ``` #### 目录结构 ``` src ├─main │ ├─java │ │ └─com │ │ └─rsa │ │ ├─common 公共变量存储类 │ │ ├─decrypt 解密相关方法处理类 │ │ │ └─sign │ │ ├─encrypt 加密相关方法处理类 │ │ │ └─sign │ │ ├─entity keys实体类 │ │ ├─generate 密钥对生成类 │ │ └─tools 字符串转公私钥工具类 │ └─resources └─test ```