RSAUtils-RSA公钥/私钥/签名工具类
作用
本工具类主要提供了RSA公钥/私钥的生成、加密、解密、签名、验签等功能。
API列表
/**
* <p>方法描述:生成密钥对的方法
* <pre>
* 改动说明:
* 【修改人:王锦阳 / 2017年8月21日 下午4:12:38 / 版本:1.0】
* </pre>
* @return 返回生成结果
* @throws Exception 生成密钥对错误时抛出该异常
*/
public static Map<RSAKeyName, RSAKey> genKeyPair() throws Exception {
// to do sth.
}
/**
* <p>方法描述:用私钥对信息生成数字签名的方法
* <pre>
* 改动说明:
* 【修改人:王锦阳 / 2017年8月21日 下午4:13:22 / 版本:1.0】
* </pre>
* @param privateKey 私钥
* @param data 已加密数据的二进制数组
* @return 返回数字签名
* @throws Exception 签名过程产生错误时抛出该异常
*/
public static String sign(String privateKey, byte[] data) throws Exception {
// to do sth.
}
/**
* <p>方法描述:用私钥对信息生成数字签名的方法
* <pre>
* 改动说明:
* 【修改人:王锦阳 / 2017年8月21日 下午4:13:22 / 版本:1.0】
* </pre>
* @param algorithm 签名算法
* @param privateKey 私钥
* @param data 已加密数据的二进制数组
* @return 返回数字签名
* @throws Exception 签名过程产生错误时抛出该异常
* @since 1.3
*/
public static String sign(SignatureAlgorithm algorithm, String privateKey, byte[] data) throws Exception {
// to do sth.
}
/**
* <p>方法描述:校验数字签名的方法
* <pre>
* 改动说明:
* 【修改人:王锦阳 / 2017年8月21日 下午4:14:32 / 版本:1.0】
* </pre>
* @param data 被加密数据的二进制数组
* @param publicKey 公钥
* @param sign 字符串签名信息
* @return 返回校验结果(true:成功,false:失败)
* @throws Exception 校验过程产生错误时抛出该异常
*/
public static boolean verify(String publicKey, byte[] data, String sign) throws Exception {
// to do sth.
}
/**
* <p>方法描述:校验数字签名的方法
* <pre>
* 改动说明:
* 【修改人:王锦阳 / 2017年8月21日 下午4:14:32 / 版本:1.0】
* </pre>
* @param algorithm 签名算法
* @param data 被加密数据的二进制数组
* @param publicKey 公钥
* @param sign 字符串签名信息
* @return 返回校验结果(true:成功,false:失败)
* @throws Exception 校验过程产生错误时抛出该异常
* @since 1.3
*/
public static boolean verify(SignatureAlgorithm algorithm, String publicKey, byte[] data, String sign) throws Exception {
// to do sth.
}
/**
* <p>方法描述:使用私钥解密的方法
* <pre>
* 改动说明:
* 【修改人:王锦阳 / 2017年8月21日 下午4:15:35 / 版本:1.0】
* </pre>
* @param encryptedData 已加密数据的二进制数组
* @param privateKey 私钥
* @return 返回解密后的结果
* @throws Exception 解密过程产生错误时抛出该异常
*/
public static byte[] decryptByPrivateKEY(byte[] encryptedData, String privateKey) throws Exception {
// to do sth.
}
/**
* <p>方法描述:使用公钥解密的方法
* <pre>
* 改动说明:
* 【修改人:王锦阳 / 2017年8月21日 下午4:16:34 / 版本:1.0】
* </pre>
* @param encryptedData 已加密数据的二进制数组
* @param publicKey 公钥
* @return 返回解密后的结果
* @throws Exception 解密过程产生错误时抛出该异常
*/
public static byte[] decryptByPublicKEY(byte[] encryptedData, String publicKey) throws Exception {
// to do sth.
}
/**
* <p>方法描述:利用公钥加密数据的方法
* <pre>
* 改动说明:
* 【修改人:王锦阳 / 2017年8月21日 下午4:11:08 / 版本:1.0】
* </pre>
* @param data 源数据
* @param publicKey 公钥
* @return 返回加密结果字符串
* @throws Exception 加密过程产生错误时抛出该异常
*/
public static byte[] encryptByPublicKEY(byte[] data, String publicKey) throws Exception {
// to do sth.
}
/**
* <p>方法描述:利用私钥加密数据的方法
* <pre>
* 改动说明:
* 【修改人:王锦阳 / 2017年8月21日 下午4:11:08 / 版本:1.0】
* </pre>
* @param data 源数据
* @param privateKey 私钥
* @return 返回加密结果字符串
* @throws Exception 加密过程产生错误时抛出该异常
*/
public static byte[] encryptByPrivateKEY(byte[] data, String privateKey) throws Exception {
// to do sth.
}
/**
* <p>方法描述:获取私钥的方法
* <pre>
* 改动说明:
* 【修改人:王锦阳 / 2017年8月21日 下午4:18:30 / 版本:1.0】
* </pre>
* @param keyMap 密钥对集合
* @return 返回私钥对象
*/
public static String getPrivateKEY(Map<RSAKeyName, RSAKey> keyMap) {
// to do sth.
}
/**
* <p>方法描述:获取公钥的方法
* <pre>
* 改动说明:
* 【修改人:王锦阳 / 2017年8月21日 下午4:18:30 / 版本:1.0】
* </pre>
* @param keyMap 密钥对集合
* @return 返回公钥对象
*/
public static String getPublicKEY(Map<RSAKeyName, RSAKey> keyMap) {
// to do sth.
}
/**
* <p>方法描述:服务端进行公钥加密的方法
* <pre>
* 改动说明:
*
* 【修改人:王锦阳 / 2017年8月21日 下午4:26:04 / 版本:1.0】
* 1. 初始方法创建
*
* 【修改人:王锦阳 / 2018年01月17日 下午15:11:20 / 版本:1.1】
* 1. 加/解密数据方法当执行失败时从打印异常堆栈改为返回null值
*
* </pre>
* @param data 源数据
* @param publicKey 公钥
* @return 返回加密后的结果<b>(如果加密失败则返回null,即表示源数据或公钥错误。)</b>
*/
public static String encryptedDataOnJava(String data, String publicKey) {
// to do sth.
}
/**
* <p>方法描述:服务端进行私钥解密的方法
* <pre>
* 改动说明:
*
* 【修改人:王锦阳 / 2017年8月21日 下午4:26:04 / 版本:1.0】
* 初始方法创建
*
* 【修改人:王锦阳 / 2018年01月17日 下午15:11:20 / 版本:1.1】
* 1. 加/解密数据方法当执行失败时从打印异常堆栈改为返回null值
*
* </pre>
* @param data 加密数据
* @param privateKey 私钥
* @return 返回解密后的结果<b>(如果解密失败则返回null,即表示加密串错误。)</b>
*/
public static String decryptDataOnJava(String data, String privateKey) {
// to do sth.
}
用法
静态工具类方法,直接使用即可。
演示
略