`
lijunaccp
  • 浏览: 153583 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

公私钥加密解密

 
阅读更多
package com.test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;

import javax.crypto.Cipher;

public class CipherRSA {

	public static void main(String[] args) throws Exception {
		new CipherRSA().publicEncrypt();
		new CipherRSA().privateDecrypt();
	}
	
	public void publicEncrypt() throws Exception{
		Cipher cipher = Cipher.getInstance("RSA");
		KeyPairGenerator keypairGenerator = KeyPairGenerator.getInstance("RSA");
		KeyPair keyPair = keypairGenerator.generateKeyPair();
		Key publicKey = keyPair.getPublic();
		Key privateKey = keyPair.getPrivate();
		saveKey(privateKey, "private_key");
		cipher.init(Cipher.ENCRYPT_MODE,publicKey);
		byte[] data = cipher.doFinal("测试数据".getBytes("UTF-8"));
		saveData(data,"public_data");
	}
	
	public void privateDecrypt() throws Exception{
		Cipher cipher = Cipher.getInstance("RSA");
		Key privateKey = readKey("private_key");
		cipher.init(Cipher.DECRYPT_MODE, privateKey);
		byte[] data = readData("public_data");
		byte[] rs = cipher.doFinal(data);
		System.out.println(new String(rs,"UTF-8"));
	}
	
	public void saveData(byte[] data, String fileName) throws Exception{
		FileOutputStream fos = new FileOutputStream(fileName);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		oos.writeObject(data);
		oos.close();
		fos.close();
	}
	
	public void saveKey(Key key, String fileName) throws Exception{
		FileOutputStream fos = new FileOutputStream(fileName);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		oos.writeObject(key);
		oos.close();
		fos.close();
	}
	
	public Key readKey(String fileName) throws Exception{
		FileInputStream fis = new FileInputStream(fileName);
		ObjectInputStream ois = new ObjectInputStream(fis);
		Key privateKey = (Key)ois.readObject();
		return privateKey;
	}
	
	public byte[] readData(String fileName) throws Exception{
		FileInputStream fis = new FileInputStream(fileName);
		ObjectInputStream ois = new ObjectInputStream(fis);
		byte[] data = (byte[])ois.readObject();
		return data;
	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics