md5,sha1,sha256等签名方式相信大家已经都非常熟悉了,今天介绍如何使用RSA进行签名。
RSA签名使用起来其实也是非常的简单,无非就是使用私钥进行签名,使用公钥进行验签。使用方法如下。
public classMain {
private static finalString private_key= "私钥";// 私钥为PKCS8格式
private static finalString public_key= "公钥";// 公钥为X509格式,如果提供的是公钥证书,则需要从公钥证书中提取该串
public static voidmain(String[] args) throwsException {
String content = "待签名内容";
IAsymmetricSign rsaSign = SignManage.getSigner("RSA2");// IAsymmetricSign rsaSign = SignManage.getSigner("RSA");
// 使用私钥进行签名String sign = rsaSign.sign(content,"UTF-8",private_key);System.out.println(sign);
// 使用公钥进行验签booleanresult = rsaSign.verify(content,"UTF-8",public_key,sign);System.out.println(result);}
}
以下是实现过程:
定义接口:即最终能够对外提供的服务。
public interfaceIAsymmetricSign {
String sign(String content,String charset,String privateKey) throwsException;
booleanverify(String content,String charset,String publicKey,String sign) throwsException;
}
定义抽象基类,约定子类必须实现doSign方法,doVerify方法,以及getSignAlgorithm方法供基类调用,即子类必须要实现的具体业务方法。
public abstract classBaseAsymmetricSign implementsIAsymmetricSign { <