/**
*
*/
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));
}
}
*
*/
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));
}
}