zoukankan      html  css  js  c++  java
  • 富友数据加密解密

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.IOException;

    import java.security.KeyFactory;

    import java.security.PrivateKey;

    import java.security.PublicKey;

    import java.security.Signature;

    import java.security.spec.PKCS8EncodedKeySpec;

    import java.security.spec.X509EncodedKeySpec;

    import java.util.Map;

    import com.hurong.core.util.AppUtil;

    import com.hurong.credit.util.FuiouUtil.Base64;

    import com.thirdPayInterface.Fuiou.FuiouInterfaceUtil;

    /**

     * 1.商户的私钥初始化

     * 2.商户验签的公钥初始化

     * 3.根据商户号加密数据

     * 4.验签富友返回数据

     *

     */

    public class SecurityUtils {

             /**

              * 私钥

              */

             public static PrivateKey privateKey;

             /**

              * 公钥

              */

             public static PublicKey publicKey;

             //得到config.properties读取的所有资源

             private static Map configMap = FuiouInterfaceUtil.fuiouProperty();

             /**

              * 私钥文件路径 如:D:/rsa/prkey.key

              */

             private static String privateKeyPath=configMap.get("thirdPay_fuiou_privateKeyPath").toString();

            

             /**

              * 公钥文件路径 如:D:/rsa/pbkey.key

              */

             private static String publicKeyPath=configMap.get("thirdPay_fuiou_publicKeyPath").toString();

             static {

                         try {

                         java.security.Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

                     }

                     catch (Exception e) {

                              e.printStackTrace();

                              System.out.println("密钥初始化失败");

                     }

             }

             /**

              *  init:初始化私钥

              */

             public static void initPrivateKey(String privateKeyPath){

                       try {

                                         if(privateKey==null){

                                                   privateKey = getPrivateKey(privateKeyPath);

                                         }

                       } catch (Exception e) {

                                System.out.println("SecurityUtils初始化失败" + e.getMessage());

                                e.printStackTrace();

                                System.out.println("密钥初始化失败");

                       }

             }

             /**

              * 初始化公钥

              */

             public static void initPublicKey(String publicKeyPath){

                       try {

                                if(publicKey==null){

                                         publicKey = getPublicKey(publicKeyPath);

                                }

                       } catch (Exception e) {

                                System.out.println("SecurityUtils初始化失败" + e.getMessage());

                                e.printStackTrace();

                                System.out.println("密钥初始化失败");

                       }

             }

            

             /**

              *  init:初始化私钥

              */

             public static void initPrivateKey(){

                       try {

                                String url=AppUtil.getAppAbsolutePath();

                                         if(privateKey==null){

                                                   //String url=AppUtil.getAppAbsolutePath();

                                                   privateKey = getPrivateKey(url+privateKeyPath);

                                         }

                       } catch (Exception e) {

                                System.out.println("SecurityUtils初始化失败" + e.getMessage());

                                e.printStackTrace();

                                System.out.println("密钥初始化失败");

                       }

             }

            

            

             /**

              * 对传入字符串进行签名

              * @param inputStr

              * @return

              * @

              */

             public static String sign(String inputStr) {

                       String result = null;

                         try {

                                    if(privateKey==null){

                                             //初始化

                                             initPrivateKey();

                                    }

                         byte[] tByte;

                         Signature signature = Signature.getInstance("SHA1withRSA","BC");

                         signature.initSign(privateKey);

                         signature.update(inputStr.getBytes("UTF-8"));

                         tByte = signature.sign();

                         result = Base64.encode(tByte);

                     }

                     catch (Exception e) {

                              e.printStackTrace();

                              System.out.println("密钥初始化失败");

                     }

                       return result;

             }

             /**

              * 对富友返回的数据进行验签

              * @param src 返回数据明文

              * @param signValue 返回数据签名

              * @return

              */

             public static boolean verifySign(String src,String signValue) {//,String publicKeyPath

                        /* boolean bool = false;

                         try {

                                       if(publicKey==null){

                                                initPublicKey(publicKeyPath);

                                         }

                         Signature signature = Signature.getInstance("SHA1withRSA","BC");

                         signature.initVerify(publicKey);

                         signature.update(src.getBytes("UTF-8"));

                         bool = signature.verify(Base64.decode(signValue));

                     }

                     catch (Exception e) {

                              e.printStackTrace();

                              System.out.println("密钥初始化失败");

                     }

                       return bool;*/

                       boolean bool = false;

                         try {

                                       if(publicKey==null){

                                                initPublicKey(privateKeyPath);

                                         }

                         Signature signature = Signature.getInstance("SHA1withRSA","BC");

                         signature.initVerify(publicKey);

                         signature.update(src.getBytes("UTF-8"));

                         bool = signature.verify(Base64.decode(signValue));

                     }

                     catch (Exception e) {

                              e.printStackTrace();

                              System.out.println("密钥初始化失败");

                     }

                       return bool;

             }

             private static PrivateKey getPrivateKey(String filePath) {

                       String base64edKey = readFile(filePath);

                       KeyFactory kf;

                       PrivateKey privateKey = null;

                       try {

                                kf = KeyFactory.getInstance("RSA", "BC");

                                PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.decode(base64edKey));

                             privateKey = kf.generatePrivate(keySpec);

                       } catch (Exception e) {

                                e.printStackTrace();

                                System.out.println("密钥初始化失败");

                       }

                       return privateKey;

             }

             private static PublicKey getPublicKey(String filePath){

                       String base64edKey = readFile(filePath);

                       KeyFactory kf;

                       PublicKey   publickey = null;

                       try {

                                kf = KeyFactory.getInstance("RSA", "BC");

                                X509EncodedKeySpec   keySpec   =   new   X509EncodedKeySpec(Base64.decode(base64edKey));

                                publickey   =   kf.generatePublic(keySpec);  

                        } catch (Exception e) {

                                e.printStackTrace();

                                System.out.println("密钥初始化失败");

                       }

                       return publickey;

             }

             private static String readFile(String fileName) {

            try {

                     String url = fileName.replace("\", "/");

                     File f = new File(url);

                FileInputStream in = new FileInputStream(f);

                int len = (int)f.length();

               

                byte[] data = new byte[len];

                int read = 0;

                while (read <len) {

                    read += in.read(data, read, len-read);

                }

                in.close();

                return new String(data);

            } catch (IOException e) {

                     e.printStackTrace();

                return null;

            }

        }

    }

  • 相关阅读:
    jsp作业第二次
    软件测试课堂练习
    第七次作业
    第六次作业
    第五次作业
    第四次作业
    第七周作业
    jsp第六周作业
    jsp第四周作业
    jsp第二次作业
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10400547.html
Copyright © 2011-2022 走看看