Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.nio.charset.StandardCharsets;
- import java.nio.file.Files;
- import java.nio.file.Paths;
- import java.util.Scanner;
- import javax.crypto.Cipher;
- import javax.crypto.spec.IvParameterSpec;
- import javax.crypto.spec.SecretKeySpec;
- public class CipherFeedback {
- public byte[] key;
- public String iv;
- private static final String ALGORITHM = "AES/CBC/NoPadding"; //
- String tekst_jawny;
- SecretKeySpec secretKey;
- public CipherFeedback(String klucz, String initVector)
- {
- key = klucz.getBytes(StandardCharsets.US_ASCII);
- iv = initVector;
- secretKey= new SecretKeySpec(key, "AES");
- }
- public String encrypt(String plainText) throws Exception
- {
- byte[] ivs = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF };
- IvParameterSpec ivSpec = new IvParameterSpec(ivs);
- Cipher cipherr = Cipher.getInstance(ALGORITHM);
- cipherr.init(Cipher.ENCRYPT_MODE, secretKey,ivSpec);
- byte[] crypted = cipherr.doFinal(plainText.getBytes());
- return new String(crypted);
- }
- public String decrypt(String cipherText) throws Exception
- {
- byte[] ivs = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF };
- IvParameterSpec ivSpec = new IvParameterSpec(ivs);
- Cipher cipherr = Cipher.getInstance(ALGORITHM);
- cipherr.init(Cipher.ENCRYPT_MODE, secretKey,ivSpec);
- byte[] output = cipherr.doFinal(cipherText.getBytes());
- return new String(output);
- }
- public byte[] wykonajXor(byte[] p, byte[] q)
- {
- for( int i = 0; i < q.length; i++)
- {
- q[i] = (byte) (q[i] ^ p[i]);
- }
- return q;
- }
- public String encryptWithCFB(String tekst_jaw) throws Exception
- {
- byte[] tablica_bajtow_tekstu_jawnego = tekst_jaw.getBytes(StandardCharsets.US_ASCII);
- String cipherIV = encrypt(iv);
- byte[] tablica_bajtow_iv = cipherIV.getBytes(StandardCharsets.US_ASCII);
- tablica_bajtow_iv = wykonajXor(tablica_bajtow_tekstu_jawnego, tablica_bajtow_iv);
- String wynik = new String(tablica_bajtow_iv);
- iv = wynik;
- return wynik;
- }
- public String decryptWithCFB(String tekst_jaw) throws Exception
- {
- byte[] tablica_bajtow_tekstu_jawnego = tekst_jaw.getBytes(StandardCharsets.US_ASCII);
- String cipherIV = encrypt(iv);
- byte[] tablica_bajtow_iv = cipherIV.getBytes(StandardCharsets.US_ASCII);
- String wynikiv=new String(tablica_bajtow_tekstu_jawnego);
- iv = wynikiv;
- tablica_bajtow_iv = wykonajXor(tablica_bajtow_tekstu_jawnego, tablica_bajtow_iv);
- String wynik = new String(tablica_bajtow_iv);
- return wynik;
- }
- public String read(String filename) throws IOException
- {
- String content;
- content = new String(Files.readAllBytes(Paths.get(filename)));
- return content;
- }
- public void szyfrujPlik() throws Exception
- {
- CipherFeedback cfb = new CipherFeedback("stereokomparator", "qwertyuiopasdfgh");
- cfb.iv="qwertyuiopasdfgh";
- BufferedWriter bw = null;
- FileWriter fw = null;
- fw = new FileWriter("2.txt");
- bw = new BufferedWriter(fw);
- try {
- cfb.tekst_jawny = read("15mb.txt");
- //System.out.println(cfb.tekst_jawny.length());
- for(int i=0;i<(cfb.tekst_jawny.length()/16);i++)
- {
- String wiadomosc = cfb.encrypt(cfb.tekst_jawny.substring(0+(16*i),16+(16*i)));
- //System.out.println(wiadomosc);
- bw.write(wiadomosc);
- }
- }
- finally
- {
- }
- bw.close();
- }
- public void deszyfrujPlik() throws Exception
- {
- CipherFeedback cfb = new CipherFeedback("stereokomparator", "qwertyuiopasdfgh");
- cfb.iv="qwertyuiopasdfgh";
- BufferedWriter bw = null;
- FileWriter fw = null;
- fw = new FileWriter("1.txt");
- bw = new BufferedWriter(fw);
- try {
- cfb.tekst_jawny = read("2.txt");
- System.out.println(cfb.tekst_jawny.length());
- for(int i=0;i<(cfb.tekst_jawny.length()/16);i++)
- {
- String wiadomosc= cfb.decrypt(cfb.tekst_jawny.substring(0+(16*i),16+(16*i)));
- //System.out.println(wiadomosc);
- bw.write(wiadomosc);
- }
- }
- finally
- {
- }
- bw.close();
- }
- public static void main(String[] args) throws Exception {
- CipherFeedback cfb = new CipherFeedback("stereokomparator","qwertyuiopasdfgh");
- long startTime = System.nanoTime();
- cfb.deszyfrujPlik();
- long endTime = System.nanoTime();
- long duration = (endTime - startTime)/1000000;
- System.out.println(duration+ " ms");
- //cfb.deszyfrujPlik();
- try
- {
- // cfb.tekst_jawny = "szymonchojnowski";
- // String wiadomosc = null;
- // for(int i=0;i<(cfb.tekst_jawny.length()/16);i++)
- // {
- // wiadomosc= cfb.encryptWithCFB(cfb.tekst_jawny.substring(0+(16*i),16+(16*i)));
- // System.out.println(wiadomosc);
- // }
- //
- // cfb.iv = "qwertyuiopasdfgh";
- // for(int i=0;i<(cfb.tekst_jawny.length()/16);i++)
- // {
- // String wiadomosc2 = cfb.encryptWithCFB(wiadomosc.substring(0+(16*i),16+(16*i)));
- // System.out.println(wiadomosc2);
- // }
- System.out.println("success");
- }
- catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement