• 大小: 2KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-17
  • 语言: Java
  • 标签: 源码  工具  

资源简介

NULL 博文链接:https://ye-liang.iteye.com/blog/2002980

资源截图

代码片段和文件信息

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;
import java.security.UnrecoverableKeyException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;


public class CertificateUtil {
/**
 * 从密钥库得到私钥
 * @param keyStorePath
 * @param alias
 * @param password
 * @return
 */
public static PrivateKey getPrivateKeyByKeystore(String keyStorePath String alias String password){
try {
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
FileInputStream is = new FileInputStream(keyStorePath);
ks.load(is password.toCharArray());
is.close();

return (PrivateKey)ks.getKey(alias password.toCharArray());
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (CertificateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
e.printStackTrace();
}
return null;
}

/**
 * 从证书得到公钥
 * @param certificatePath
 * @return
 */
public static PublicKey getPublicKeyByCertificate(String certificatePath){
try {
CertificateFactory certificateFactory = CertificateFactory.getInstance(“X.509“);
FileInputStream is = new FileInputStream(certificatePath);
Certificate certificate = certificateFactory.generateCertificate(is);
is.close();

return certificate.getPublicKey();
} catch (CertificateException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

/**
 * 私钥加解密
 * @param data
 * @param privateKey
 * @param mode
 *            0-加密,1-解密
 * @return
 */
public static String codeByPrivateKey(String data PrivateKey privateKey int mode){
try {
Cipher cipher = Cipher.getInstance(privateKey.getAlgorithm());
if (mode == 0) {
cipher.init(Cipher.ENCRYPT_MODE privateKey);
} else {
cipher.init(Cipher.DECRYPT_MODE privateKey);
}
return Hex.encodeHexString(cipher.doFinal(Hex.decodeHex(data
.toCharArray())));
} catch (NoSuchAlgorithmExcepti

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8033  2014-01-12 19:43  CertificateUtil.java

----------- ---------  ---------- -----  ----

                 8033                    1


评论

共有 条评论