java RSA 加签验签【转】
生活随笔
收集整理的這篇文章主要介紹了
java RSA 加签验签【转】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
引用自:?http://blog.csdn.net/wangqiuyun/article/details/42143957/
?
java RSA 加簽驗簽
package com.testdemo.core.service.impl.alipay;import java.security.KeyFactory; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec;import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;/*** RSA簽名驗簽類 http://blog.csdn.net/wangqiuyun/article/details/42143957/*/ public class RSASignature {/*** 簽名算法*/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(new BASE64Decoder().decodeBuffer(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 new BASE64Encoder().encode(signed);} catch (Exception e) {e.printStackTrace();}return null;}public static String sign(String content, String privateKey) {try {PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(new BASE64Decoder().decodeBuffer(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());byte[] signed = signature.sign();return new BASE64Encoder().encode(signed);} catch (Exception e) {e.printStackTrace();}return null;}/*** RSA驗簽名檢查* * @param content* 待簽名數據* @param sign* 簽名值* @param publicKey* 分配給開發商公鑰* @param encode* 字符集編碼* @return 布爾值*/public static boolean doCheck(String content, String sign, String publicKey, String encode) {try {KeyFactory keyFactory = KeyFactory.getInstance("RSA");byte[] encodedKey = new BASE64Decoder().decodeBuffer(publicKey);PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);signature.initVerify(pubKey);signature.update(content.getBytes(encode));boolean bverify = signature.verify(new BASE64Decoder().decodeBuffer(sign));return bverify;} catch (Exception e) {e.printStackTrace();}return false;}public static boolean doCheck(String content, String sign, String publicKey) {try {KeyFactory keyFactory = KeyFactory.getInstance("RSA");byte[] encodedKey = new BASE64Decoder().decodeBuffer(publicKey);PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);signature.initVerify(pubKey);signature.update(content.getBytes());boolean bverify = signature.verify(new BASE64Decoder().decodeBuffer(sign));return bverify;} catch (Exception e) {e.printStackTrace();}return false;}}?
轉載于:https://www.cnblogs.com/whatlonelytear/p/6739811.html
總結
以上是生活随笔為你收集整理的java RSA 加签验签【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两种动态SQL
- 下一篇: Flume 中文入门手冊