Шифровка
Придумать механизм шифровки/дешифровки.
Программа запускается с одним из следующих наборов параметров:
-e fileName fileOutputName
-d fileName fileOutputName
где:
fileName - имя файла, который необходимо зашифровать/расшифровать.
fileOutputName - имя файла, куда необходимо записать результат шифрования/дешифрования.
-e - ключ указывает, что необходимо зашифровать данные.
-d - ключ указывает, что необходимо расшифровать данные.
Требования:
1. Считывать с консоли ничего не нужно.
2. Создай поток для чтения из файла, который приходит вторым параметром ([fileName]).
3. Создай поток для записи в файл, который приходит третьим параметром ([fileOutputName]).
4. В режиме "-e" программа должна зашифровать [fileName] и записать в [fileOutputName].
5. В режиме "-d" программа должна расшифровать [fileName] и записать в [fileOutputName].
6. Созданные для файлов потоки должны быть закрыты.
Реализовал криптографический алгоритм Blowfish, все работает(шифрует\расшифровывает), но задача не компилируется на сервере. Половина дня потрачено зря :((
package com.javarush.task.task18.task1826;
/*
Шифровка
*/
/*
* JBoss.java - Blowfish encryption/decryption tool with JBoss default password
* Daniel Martin Gomez <daniel@ngssoftware.com> - 03/Sep/2009
*
* This file may be used under the terms of the GNU General Public License
* version 2.0 as published by the Free Software Foundation:
* http://www.gnu.org/licenses/gpl-2.0.html
*/
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
public class Solution {
public static void main(String[] args) throws Exception {
String mode = args[0];
String fileName1 = args[1];
String encryptFileName = args[2];
byte[] kbayts = "123456789ABCDEF".getBytes();
FileInputStream fis = new FileInputStream(fileName1);
FileOutputStream fos = new FileOutputStream(encryptFileName);
byte[] bufferFileName = null;
if (fis.available() > 0) {
bufferFileName = new byte[fis.available()];
fis.read(bufferFileName);
}
SecretKeySpec key = new SecretKeySpec(kbayts, "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
if (mode.startsWith("-e")) {
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encoding = cipher.doFinal(bufferFileName);
System.out.print(encoding.length);
fos.write(encoding);
fos.close();
fis.close();
}
else
{
ByteArrayInputStream bb = new ByteArrayInputStream(bufferFileName);
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] message = cipher.doFinal(bb.readAllBytes());
fos.write(message);
fos.close();
fis.close();
}
}
}
package com.javarush.task.task18.task1826;
/*
Шифровка
*/
/*
* JBoss.java - Blowfish encryption/decryption tool with JBoss default password
* Daniel Martin Gomez <daniel@ngssoftware.com> - 03/Sep/2009
*
* This file may be used under the terms of the GNU General Public License
* version 2.0 as published by the Free Software Foundation:
* http://www.gnu.org/licenses/gpl-2.0.html
*/
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
public class Solution {
public static void main(String[] args) throws Exception {
String mode = args[0];
String fileName1 = args[1];
String encryptFileName = args[2];
byte[] kbayts = "123456789ABCDEF".getBytes();
FileInputStream fis = new FileInputStream(fileName1);
FileOutputStream fos = new FileOutputStream(encryptFileName);
byte[] bufferFileName = null;
if (fis.available() > 0) {
bufferFileName = new byte[fis.available()];
fis.read(bufferFileName);
}
SecretKeySpec key = new SecretKeySpec(kbayts, "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish");
if (mode.startsWith("-e")) {
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encoding = cipher.doFinal(bufferFileName);
System.out.print(encoding.length);
fos.write(encoding);
fos.close();
fis.close();
}
else
{
ByteArrayInputStream bb = new ByteArrayInputStream(bufferFileName);
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] message = cipher.doFinal(bb.readAllBytes());
fos.write(message);
}
}
}