Java数字证书对文件加密解密签名校验签名

上传人:ji****72 文档编号:37521229 上传时间:2018-04-17 格式:DOCX 页数:34 大小:135.43KB
返回 下载 相关 举报
Java数字证书对文件加密解密签名校验签名_第1页
第1页 / 共34页
Java数字证书对文件加密解密签名校验签名_第2页
第2页 / 共34页
Java数字证书对文件加密解密签名校验签名_第3页
第3页 / 共34页
Java数字证书对文件加密解密签名校验签名_第4页
第4页 / 共34页
Java数字证书对文件加密解密签名校验签名_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《Java数字证书对文件加密解密签名校验签名》由会员分享,可在线阅读,更多相关《Java数字证书对文件加密解密签名校验签名(34页珍藏版)》请在金锄头文库上搜索。

1、http:/ Base64Utils.java 在其他随笔中已经贴出。Java 证书生成命令如下,不做过多解释,可先到网上查询下资料,本文仅提供工具类代码:把生成的密钥库和证书都放到类的同包下。keytool -validity 365 -genkey -v -alias -keyalg RSA -keystore D:keyasdc.keystore -dname “CN=172.25.67.98,OU=stos,O=asdc,L=Haidian,ST=Beijing,c=cn“ -storepass 123456 -keypass 123456keytool -export -v -al

2、ias -keystore D:keyasdc.keystore -stor epass 123456 -rfc -file D:keyasdc.cerCertificateUtils.javaimport java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.Outp

3、utStream;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;import java.security.KeyStore;import java.security.PrivateKey;import java.security.PublicKey;import java.security.Signature;import java.security.cert.Certificate;import java.security.cert.CertificateFactory;import java.se

4、curity.cert.X509Certificate;import java.util.Date;import javax.crypto.Cipher;/* * 数字签名/加密解密工具包* * * author IceWee* date 2012-4-26* version 1.0*/public class CertificateUtils /* Java 密钥库(Java 密钥库,JKS)KEY_STORE*/public static final String KEY_STORE = “JKS“;public static final String X509 = “X.509“;/*

5、文件读取缓冲区大小*/private static final int CACHE_SIZE = 2048;/* 最大文件加密块*/private static final int MAX_ENCRYPT_BLOCK = 117;/* 最大文件解密块*/private static final int MAX_DECRYPT_BLOCK = 128;/* * 根据密钥库获得私钥* * * param keyStorePath 密钥库存储路径* param alias 密钥库别名* param password 密钥库密码* return* throws Exception*/private s

6、tatic PrivateKey getPrivateKey(String keyStorePath, String alias, St ring password) throws Exception KeyStore keyStore = getKeyStore(keyStorePath, password);PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, password.to CharArray();return privateKey;/* * 获得密钥库* * * param keyStorePath 密钥库存储路

7、径* param password 密钥库密码* return* throws Exception*/private static KeyStore getKeyStore(String keyStorePath, String password)throws Exception FileInputStream in = new FileInputStream(keyStorePath);KeyStore keyStore = KeyStore.getInstance(KEY_STORE);keyStore.load(in, password.toCharArray();in.close();

8、return keyStore;/* * 根据证书获得公钥* * * param certificatePath 证书存储路径* return* throws Exception*/private static PublicKey getPublicKey(String certificatePath)throws Exception Certificate certificate = getCertificate(certificatePath);PublicKey publicKey = certificate.getPublicKey();return publicKey;/* * 获得

9、证书* * * param certificatePath 证书存储路径* return* throws Exception*/private static Certificate getCertificate(String certificatePath)throws Exception CertificateFactory certificateFactory = CertificateFactory.getInstance(X509);FileInputStream in = new FileInputStream(certificatePath);Certificate certifi

10、cate = certificateFactory.generateCertificate(in);in.close();return certificate;/* * 根据密钥库获得证书* * * param keyStorePath 密钥库存储路径* param alias 密钥库别名* param password 密钥库密码* return* throws Exception*/private static Certificate getCertificate(String keyStorePath, String alias, Stri ng password) throws Exc

11、eption KeyStore keyStore = getKeyStore(keyStorePath, password);Certificate certificate = keyStore.getCertificate(alias);return certificate;/* * 私钥加密* * * param data 源数据* param keyStorePath 密钥库存储路径* param alias 密钥库别名* param password 密钥库密码* return* throws Exception*/public static byte encryptByPrivate

12、Key(byte data, String keyStorePath, String alias, String password) throws Exception / 取得私钥PrivateKey privateKey = getPrivateKey(keyStorePath, alias, password);Cipher cipher = Cipher.getInstance(privateKey.getAlgorithm();cipher.init(Cipher.ENCRYPT_MODE, privateKey);int inputLen = data.length;ByteArra

13、yOutputStream out = new ByteArrayOutputStream();int offSet = 0;byte cache;int i = 0;/ 对数据分段加密while (inputLen - offSet 0) if (inputLen - offSet MAX_ENCRYPT_BLOCK) cache = cipher.doFinal(data, offSet, MAX_ENCRYPT_BLOCK); else cache = cipher.doFinal(data, offSet, inputLen - offSet);out.write(cache, 0,

14、cache.length);i+;offSet = i * MAX_ENCRYPT_BLOCK;byte encryptedData = out.toByteArray();out.close();return encryptedData;/* * 文件私钥加密* * * 过大的文件可能会导致内存溢出* * * param filePath 文件路径* param keyStorePath 密钥库存储路径* param alias 密钥库别名* param password 密钥库密码* return* throws Exception*/public static byte encryptF

15、ileByPrivateKey(String filePath, String keyStorePath, String alias, String password) throws Exception byte data = fileToByte(filePath);return encryptByPrivateKey(data, keyStorePath, alias, password);/* * 文件加密* * * param srcFilePath 源文件* param destFilePath 加密后文件* param keyStorePath 密钥库存储路径* param alias 密钥库别名* param password 密钥库密码* throws Exception*/public static void encryptFileByPrivateKey(String srcFilePath, String destFileP ath, String keyStorePath, String alias, String password)throws Exception / 取得私钥PrivateKey privateKey = getPrivateKey(keyStorePath, alias, password);Cipher cipher

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号