ras工具类

来源:互联网 发布:sql server log工具 编辑:程序博客网 时间:2024/05/22 14:17
/**
 *
 */
package com.hlmedicals.app.util;

import java.io.UnsupportedEncodingException;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;

import com.itextpdf.xmp.impl.Base64;






/**
 * @author dell
 *
 */
public class RsaUtil {
    
    
    public static void main (String [] args){
        
        try {
            byte[]  privateKeyString= IConst.privateKeyString.getBytes("utf-8");
            byte[]  publicKeyString= IConst.publicKeyString.getBytes("utf-8");
            String data1 = "testabc";
            //siyao签名
            byte[] data=data1.getBytes("utf-8");
            byte[] s = sign(data, privateKeyString);
            boolean b=verify(data,s,publicKeyString);
            System.out.println(b);
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
        
    }
    /**
     * 使用私钥对数据进行加密签名
     * @param data 数据
     * @param privateKeyString 私钥
     * @return 加密后的签名
     */  
    public static byte[] sign(byte[] data, byte[] privateKeyString) throws Exception {  
        KeyFactory keyf = KeyFactory.getInstance("RSA");  
        PrivateKey privateKey = keyf.generatePrivate(new PKCS8EncodedKeySpec(Base64.decode(privateKeyString)));  
        java.security.Signature signet = java.security.Signature.getInstance("SHA1withRSA");  
        signet.initSign(privateKey);  
        signet.update(data);  
        byte[] signed = signet.sign();  
        return Base64.encode(signed);  
       
    }  
    
    /**
     * 使用公钥判断签名是否与数据匹配
     * @param data 数据
     * @param sign 签名
     * @param publicKeyString 公钥
     * @return 是否篡改了数据
     */  
    public static boolean verify(byte[] data, byte[] sign, byte[] publicKeyString) throws Exception {  
        KeyFactory keyf = KeyFactory.getInstance("RSA");  
        PublicKey publicKey = keyf.generatePublic(new X509EncodedKeySpec(Base64.decode(publicKeyString)));  
        java.security.Signature signet = java.security.Signature.getInstance("SHA1withRSA");  
        signet.initVerify(publicKey);  
        signet.update(data);  
        return signet.verify(Base64.decode(sign));  
    }

}

0 0
原创粉丝点击