CertificateTester.java
package
security;
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
import
static
org.junit.Assert.assertArrayEquals;
import
static
org.junit.Assert.assertEquals;
import
static
org.junit.Assert.assertTrue;
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
public
class
CertificateTester
{
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
private static final String KEY_STORE_NAME = "asdc.keystore";
private static final String CERTIFICATE_NAME = "asdc.cer";
private static final String password = "123456";
private static final String alias = "www.asdc.com.cn";
private static String certificatePath
private static String keyStorePath;
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
static {
String currentDir =CertificateTester.class.getResource("").getPath();
if (currentDir.startsWith("/"))
currentDir =currentDir.substring(1);
if (!currentDir.endsWith("/"))
currentDir +="/";
keyStorePath =currentDir + KEY_STORE_NAME;
certificatePath =currentDir + CERTIFICATE_NAME;
}
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
public static void main(String[] args) throws Exception {
simple();
simpleSign();
testFileSign();
}
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
static void simple() throws Exception {
System.err.println("公钥加密——私钥解密");
String source ="这是一行没有任何意义的文字,你看完了等于没看,不是吗?";
byte[] data = source.getBytes();
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
byte[] encrypt = CertificateUtils.encryptByPublicKey(data,certificatePath);
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
byte[] decrypt = CertificateUtils.decryptByPrivateKey(encrypt,keyStorePath, alias, password);
String outputStr =new String(decrypt);
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
System.out.println("加密前:\r\n" + source + "\r\n" + "解密后:\r\n" + outputStr);
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
// 验证数据一致
assertArrayEquals(data,decrypt);
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
// 验证证书有效
assertTrue(CertificateUtils.verifyCertificate(certificatePath));
}
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
static void simpleSign() throws Exception {
System.err.println("私钥加密——公钥解密");
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
String source ="这是一行签名的测试文字";
byte[] data = source.getBytes();
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
byte[] encodedData = CertificateUtils.encryptByPrivateKey(data,keyStorePath, alias, password);
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
byte[] decodedData = CertificateUtils.decryptByPublicKey(encodedData,certificatePath);
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
String target =new String(decodedData);
System.out.println("加密前:\r\n" + source + "\r\n" + "解密后:\r\n" + target);
assertEquals(source, target);
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
System.err.println("私钥签名——公钥验证签名");
// 产生签名
String sign = CertificateUtils.signToBase64(encodedData,keyStorePath, alias, password);
System.out.println("签名:\r\n" + sign);
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
// 验证签名
boolean status = CertificateUtils.verifySign(encodedData, sign,certificatePath);
System.err.println("状态:\r\n" + status);
assertTrue(status);
}
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
static void testFileSign() throws Exception {
String filePath ="D:/software/eclipse-SDK-3.3.2-win32.zip";
String sign =CertificateUtils.signFileToBase64(filePath,keyStorePath, alias, password);
System.err.println("生成签名:\r\n" + sign);
boolean result = CertificateUtils.verifyFileSign(filePath, sign,certificatePath);
System.err.println("校验结果:" + result);
}
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
}
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二) Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/1fa987a29c6482f53d401256f96355eb.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二) Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二) Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二) Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二) Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二) Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
![Java数字证书对文件、加密、解密、签名、校验签名(二)](https://i-blog.csdnimg.cn/blog_migrate/8f1ba5b45633e9678d1db480c16cae3f.gif)