基於pfx證書文件的加解密工具類


import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.PublicKey;
import javax.crypto.Cipher;
import org.apache.commons.io.IOUtils;
import org.springframework.util.ResourceUtils;
import com.google.common.base.Charsets;

public class SignUtil {

static Cipher cipher;

/**
 * @Fields prikey : 私鑰
 */ 
static PrivateKey prikey;

/**
 * @Fields pubkey : 公鑰
 */ 
static PublicKey pubkey;

/**
 * @Fields path : 證書存放路徑
 */ 
static String path = "classpath:private cert.pfx";

/**
 * @Fields password : 證書密碼
 */ 
static char[] password = "111111".toCharArray();

static {
	try {
		cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
		KeyStore ks = KeyStore.getInstance("PKCS12");
		FileInputStream fis = new FileInputStream(ResourceUtils.getFile(path));
		ks.load(fis, password);
		IOUtils.closeQuietly(fis);
		String keyAlias = ks.aliases().nextElement();
		prikey = (PrivateKey) ks.getKey(keyAlias, password);
		pubkey = ks.getCertificate(keyAlias).getPublicKey();
	} catch (Exception e) {
		e.printStackTrace();
	}
}

public static byte[] encrypt(String value) {
	// 通過下面這段代碼提取的私鑰是否正確
	try {
		cipher.init(Cipher.ENCRYPT_MODE, prikey);
		// 進行加密,返回一個字節流
		return cipher.doFinal(value.getBytes(Charsets.UTF_8));
	} catch (Exception e) {
	}
	return null;
}

public static String decrypt(byte[] value) {
	try {
		cipher.init(Cipher.DECRYPT_MODE, pubkey);
		// 進行加密,返回一個字節流
		return new String(cipher.doFinal(value), Charsets.UTF_8);
	} catch (Exception e) {
	}
	return "";
}

public static void main(String[] args) {
	try {
		String yuanwen = "edc6c1239f7436679df771858cd03fc80137f7d3";
		System.out.println("原文:"+yuanwen);
		byte[] encryptBytes = encrypt(yuanwen);
		String encrypt = new String(encryptBytes,Charsets.ISO_8859_1);
		System.out.println("私鑰加密結果:" + encrypt);
		byte[] bytes = encrypt.getBytes(Charsets.ISO_8859_1);
		String decrypt = decrypt(bytes);
		System.out.println("公鑰解密結果:" + decrypt);
	} catch (Exception e) {
		e.printStackTrace();
	}
}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM