1 package com.test;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileOutputStream;
6 import java.io.InputStream;
7 import java.io.OutputStream;
8 import java.security.KeyPair;
9 import java.security.KeyPairGenerator;
10 import java.security.NoSuchAlgorithmException;
11 import java.security.interfaces.RSAPrivateKey;
12 import java.security.interfaces.RSAPublicKey;
13 import javax.crypto.Cipher;
14
15 public class RSAEncrypt {
16
17 static KeyPairGenerator keyPairGen;
18
19 static KeyPair keyPair;
20
21 static RSAPrivateKey privateKey;
22
23 static RSAPublicKey publicKey;
24
25 static {
26 try {
27 keyPairGen = KeyPairGenerator.getInstance("RSA");
28 keyPairGen.initialize(512);
29 keyPair = keyPairGen.generateKeyPair();
30 // Generate keys
31 privateKey = (RSAPrivateKey) keyPair.getPrivate();
32 publicKey = (RSAPublicKey) keyPair.getPublic();
33 } catch (NoSuchAlgorithmException e) {
34 // TODO Auto-generated catch block
35 e.printStackTrace();
36 }
37 }
38
39 public static void main(String[] args) {
40 RSAEncrypt encrypt = new RSAEncrypt();
41 File file = new File("C:\\Users\\张洋\\Desktop\\logo1.png");
42 File newFile = new File("C:\\Users\\张洋\\Desktop\\logo已加密");
43 encrypt.encryptFile(encrypt, file, newFile);
44 File file1 = new File("C:\\Users\\张洋\\Desktop\\logo已加密");
45 File newFile1 = new File("C:\\Users\\张洋\\Desktop\\logo已解密.png");
46 encrypt.decryptFile(encrypt, file1, newFile1);
47 }
48
49 public void encryptFile(RSAEncrypt encrypt, File file, File newFile) {
50 try {
51 InputStream is = new FileInputStream(file);
52 OutputStream os = new FileOutputStream(newFile);
53
54 byte[] bytes = new byte[53];
55 while (is.read(bytes) > 0) {
56 byte[] e = encrypt.encrypt(RSAEncrypt.publicKey, bytes);
57 bytes = new byte[53];
58 os.write(e, 0, e.length);
59 }
60 os.close();
61 is.close();
62 System.out.println("write success");
63 } catch (Exception e) {
64 e.printStackTrace();
65 }
66 }
67
68 public void decryptFile(RSAEncrypt encrypt, File file, File newFile) {
69 try {
70 InputStream is = new FileInputStream(file);
71 OutputStream os = new FileOutputStream(newFile);
72 byte[] bytes1 = new byte[64];
73 while (is.read(bytes1) > 0) {
74 byte[] de = encrypt.decrypt(RSAEncrypt.privateKey, bytes1);
75 bytes1 = new byte[64];
76 os.write(de, 0, de.length);
77 }
78 os.close();
79 is.close();
80 System.out.println("write success");
81
82 } catch (Exception e) {
83 e.printStackTrace();
84 }
85 }
86
87 /** */
88 /**
89 * * Encrypt String. *
90 *
91 * @return byte[]
92 */
93 protected byte[] encrypt(RSAPublicKey publicKey, byte[] obj) {
94 if (publicKey != null) {
95 try {
96 Cipher cipher = Cipher.getInstance("RSA");
97 cipher.init(Cipher.ENCRYPT_MODE, publicKey);
98 return cipher.doFinal(obj);
99 } catch (Exception e) {
100 e.printStackTrace();
101 }
102 }
103 return null;
104 }
105
106 /** */
107 /**
108 * * Basic decrypt method *
109 *
110 * @return byte[]
111 */
112 protected byte[] decrypt(RSAPrivateKey privateKey, byte[] obj) {
113 if (privateKey != null) {
114 try {
115 Cipher cipher = Cipher.getInstance("RSA");
116 cipher.init(Cipher.DECRYPT_MODE, privateKey);
117 return cipher.doFinal(obj);
118 } catch (Exception e) {
119 e.printStackTrace();
120 }
121 }
122 return null;
123 }
124 }
java 文件加密解密
时间: 2024-10-10 13:30:17