java特征签名,Java签名校验

1、签名代码

/**

* 签名算法

*/

public static final String SIGN_ALGORITHMS = "SHA1WithRSA";

/**

* RSA签名

* @param content 待签名数据

* @param privateKey 私钥

* @param encode 字符集编码

* @return 签名值

*/

public static String sign(String content, String privateKey, String encode) {

try{

PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec( Base64.decode(privateKey) );

KeyFactory keyf = KeyFactory.getInstance("RSA");

PrivateKey priKey = keyf.generatePrivate(priPKCS8);

java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);

signature.initSign(priKey);

signature.update( content.getBytes(encode));

byte[] signed = signature.sign();

return Base64.encode(signed);

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

2、验签代码

/**

* 校验缓存控制文件的签名是否合法

* @param content 待签名数据

* @param sign 签名值

* @param publicKey 公钥

* @return 失败时,返回false。

*/

public static boolean verifySignature(String content,String sign,String publicKey){

if(null == fileText || null == signText || "".equals(fileText) || "".equals(signText)){

return false;

}

try {

byte[] pubKeyText = publicKey.getBytes();

byte[] signTextByte = signText.getBytes();

X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(Base64.decode(pubKeyText, Base64.DEFAULT));

KeyFactory keyFactory = KeyFactory.getInstance("RSA");

PublicKey pubKey = keyFactory.generatePublic(bobPubKeySpec);

byte[] signed = Base64.decode(signTextByte, Base64.DEFAULT);

Signature signatureChecker = Signature.getInstance("SHA1WithRSA");

signatureChecker.initVerify(pubKey);

signatureChecker.update(content.getBytes());

// 验证签名是否正常

return signatureChecker.verify(signed);

} catch (Exception e) {

MuLog.error(TAG, e);

return false;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值