RSA加密

public static String encrypt(String source) throws Exception{
  generateKeyPair();
  /** 将文件中的公钥对象读出 */
  ObjectInputStream ois = new ObjectInputStream(new FileInputStream("PublicKey"));
  Key key = (Key) ois.readObject();
  ois.close();
  /** 得到Cipher对象来实现对源数据的RSA加密 */
  Cipher cipher = Cipher.getInstance("RSA");
  cipher.init(Cipher.ENCRYPT_MODE, key);
  byte[] b = source.getBytes();
  /** 执行加密操作 */
  byte[] b1 = cipher.doFinal(b);
  BASE64Encoder encoder = new BASE64Encoder();
  return encoder.encode(b1);
}
    private static void generateKeyPair() throws Exception{
 /** RSA算法要求有一个可信任的随机数源 */
  SecureRandom sr = new SecureRandom();
  /** 为RSA算法创建一个KeyPairGenerator对象 */
  KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
 /** 利用上面的随机数据源初始化这个KeyPairGenerator对象 */
  kpg.initialize(1024, sr);
  /** 生成密匙对 */
  KeyPair kp = kpg.generateKeyPair();
  /** 得到公钥 */
  Key publicKey = kp.getPublic();
  /** 得到私钥 */
  Key privateKey = kp.getPrivate();
  /** 用对象流将生成的密钥写入文件 */
  ObjectOutputStream oos1 = new ObjectOutputStream(new FileOutputStream("PublicKey"));
  ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream("PrivateKey"));
  oos1.writeObject(publicKey);
  oos2.writeObject(privateKey);
  /** 清空缓存,关闭文件输出流 */
  oos1.close();
  oos2.close();

}




在上面调用util类里面的方法

String signStr=oid_biz+jno_cli+oid_reguser+uid_cli+price;
     PublicKey publicKey=util.loadPublicKeyPair();
     String sign=Encrypt(signStr,publicKey);

//RSA读取文件获取公钥,一个PublicKey的对象

 public String Encrypt (String sign_str,PublicKey pubKey)//签名格式
{
try
{
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] data=sign_str.getBytes();
byte[] bt=cipher.doFinal(data);
// System.out.println(Base64.encodeBase64String(bt));
   String result = Base64.encodeBase64String(bt);
   return result;
} catch (Exception e) {
     e.printStackTrace();
     System.out.println("签名失败!");
}
return "";
}

 

util类

public class util {

public static String publicKeyFile = "D:/430083public.key";//去文件中读取出来

public static PublicKey loadPublicKeyPair() throws Exception {
FileInputStream fos = new FileInputStream(publicKeyFile);
ObjectInputStream oos = new ObjectInputStream(fos);
//生成密钥
PublicKey pKey; 
pKey=(PublicKey)oos.readObject();
oos.close();
fos.close();
return pKey;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值