- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.security.Security;
- import java.security.spec.AlgorithmParameterSpec;
- import javax.crypto.Cipher;
- import javax.crypto.CipherInputStream;
- import javax.crypto.CipherOutputStream;
- import javax.crypto.KeyGenerator;
- import javax.crypto.SecretKey;
- import javax.crypto.spec.IvParameterSpec;
- public class Main {
- static Cipher ce;
- static Cipher cd;
- public static void main(String args[]) throws Exception {
- Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
- SecretKey skey = KeyGenerator.getInstance("DES").generateKey();
- byte[] initializationVector = new byte[]{0x10, 0x10, 0x01, 0x04, 0x01, 0x01, 0x01, 0x02};
- AlgorithmParameterSpec algParameters = new IvParameterSpec(initializationVector);
- ce = Cipher.getInstance("DES/CBC/PKCS5Padding");
- cd = Cipher.getInstance("DES/CBC/PKCS5Padding");
- ce.init(Cipher.ENCRYPT_MODE, skey, algParameters);
- cd.init(Cipher.DECRYPT_MODE, skey, algParameters);
- FileInputStream is = new FileInputStream("C:/Users/nikos7/Desktop/output.txt");
- FileOutputStream os = new FileOutputStream("C:/Users/nikos7/Desktop/output2.txt");
- int dataSize = is.available();
- byte[] inbytes = new byte[dataSize];
- is.read(inbytes);
- String str2 = new String(inbytes);
- System.out.println("Input file content\n" + str2 + "\n");
- write_encode(inbytes, os);
- os.flush();
- is.close();
- os.close();
- System.out.println("Ecrypted Content to output2.txt\n");
- is = new FileInputStream("C:/Users/nikos7/Desktop/output2.txt");
- byte[] decBytes = new byte[dataSize];
- read_decode(decBytes, is);
- is.close();
- String str = new String(decBytes);
- System.out.println("Decrypted file contents:\n" + str);
- }
- public static void write_encode(byte[] bytes, OutputStream output) throws Exception {
- CipherOutputStream cOutputStream = new CipherOutputStream(output, ce);
- cOutputStream.write(bytes, 0, bytes.length);
- cOutputStream.close();
- }
- public static void read_decode(byte[] bytes, InputStream input) throws Exception {
- CipherInputStream cInputStream = new CipherInputStream(input, cd);
- int position = 0, i;
- while ((i = cInputStream.read()) != -1) {
- bytes[position] = (byte) i;
- position++;
- }
- }
- }
来源: http://www.phpxs.com/code/1002366/