· 7 years ago · Jan 04, 2019, 10:08 PM
1package tp.jce;
2
3import java.io.BufferedInputStream;
4import java.io.ByteArrayOutputStream;
5import java.io.FileInputStream;
6import java.security.KeyPair;
7import java.security.KeyPairGenerator;
8import java.security.NoSuchAlgorithmException;
9import java.security.PrivateKey;
10import java.security.Signature;
11
12import javax.crypto.Cipher;
13import javax.crypto.KeyGenerator;
14import javax.crypto.NoSuchPaddingException;
15import javax.crypto.SecretKey;
16
17public class MainClass {
18
19
20 public static void main(String[] args) {
21
22 try {
23
24
25 //pair de cle public prive
26
27 KeyPairGenerator key = KeyPairGenerator.getInstance("RSA");
28 KeyPair kp = key.generateKeyPair();
29
30 //Generation du cle secrect pour chiffrer
31
32 KeyGenerator generator =KeyGenerator.getInstance("AES");
33 SecretKey secretKey = generator.generateKey();
34
35 byte[] signature =signer("file.txt",kp.getPrivate()) ;
36
37 System.out.println(new String(signature));
38
39
40 byte[] crypt =crpytFile("file.txt",secretKey) ;
41
42 System.out.println("-------------------------------------");
43 System.out.println(new String(crypt));
44
45
46
47
48 } catch (Exception e) {
49 // TODO Auto-generated catch block
50 e.printStackTrace();
51 }
52
53
54
55 }
56
57 private static byte[] crpytFile(String string, SecretKey secretKey) throws Exception {
58
59
60 Cipher cipher = Cipher.getInstance("AES");
61
62 cipher.init(Cipher.ENCRYPT_MODE, secretKey);
63
64 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(string));
65
66 byte[] buff = new byte[1024];
67 byte[] res = new byte[1024];
68 ByteArrayOutputStream stream = new ByteArrayOutputStream();
69
70 while (bis.available()!=0) {
71 bis.read(buff);
72 stream.write(cipher.update(buff));
73 stream.write(res);
74 }
75 bis.read(buff);
76 res=cipher.doFinal(buff);
77 stream.write(res);
78 bis.close();
79
80 return stream.toByteArray();
81 }
82
83 private static byte[] signer(String string, PrivateKey private1) throws Exception {
84
85 Signature s = Signature.getInstance("MD5withRSA");
86
87 s.initSign(private1);
88
89 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(string));
90
91 byte[] buff = new byte[1024];
92
93 while (bis.available()!=0) {
94 bis.read(buff);
95 s.update(buff);
96 }
97
98 return s.sign();
99 }
100}