Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как зашифровать файл?


Автор: neo03 12.9.2011, 21:58
Доброго всем времени суток! Изучаю книгу К.Хорстмана и Г.Корнелла Java2. ТомII. Там в главе 9, посвященной вопросам безопасности есть пример: алгоритм шифрования Цезаря(сдвигает текст на три буквы).Он по идее должен выдавать файлы с расширением .caesar . А как мне получить этот файл (допустим мне надо зашифровать файл Calculator.java в том же каталоге home/neo/clt, в котором находится и файл Caesar.java ) ? Т.е. мне надо получить файл Calculator.caesar.  Вот файл Caesar.java:

Код

import java.io.*;

//Копирование файла с использованием шифра Цезаря.
public class Caesar
{
    public static void main(String[] args)
    {
        if (args.length != 3)
        {
            System.out.println("USAGE: java Caesar in out key");
            return;
        }
        
        try
        {
            FileInputStream in = new FileInputStream(args[0]);
            FileOutputStream out = new FileOutputStream(args[1]);
            int key = Integer.parseInt(args[2]);
            int ch;
            while((ch = in.read()) != -1)
            {
                byte c = (byte)(ch + key);
                out.write(c);
            }
            in.close();
            out.close();
        }
        catch(IOException exception)
        {
            exception.printStackTrace();
        }
    }
}

Автор: dobrolub 12.9.2011, 22:07
Для 'in' укажи либо
- полный путь к файлу (C:\\proj\\ch-9\\home\\neo\\clt\\Calculator.java)
- либо относительный путь e.g. home\\neo\\clt\\Calculator.java

Код

java -cp . C:\\proj\\ch-9\\home\\neo\\clt\\Calculator.java c:\\temp\\Calculator.cesar

Автор: neo03 12.9.2011, 22:51
Я когда просто запускал файл Caesar.java, то он мне выдавал: "USAGE: java Caesar in out key" и всё. 
Я, честно говоря, не понял: причем тогда в Вашей командной строке файл Caesar.java? Ведь именно он шифрует страницу. По - моему команда - ср означает копирование, или я ошибаюсь? Но мне не надо копировать, мне надо зашифровать файл Calculator.java  с помощью файла Caesar.java(он реализует алгоритм шифрования) и в результате шифрования должен получиться файл Calculator.caesar. Но какой командой  это сделать я не знаю.Я работаю в Ubuntu10.10. Если не трудно, поясните пожалуйста.

Автор: dobrolub 12.9.2011, 23:24
ах. понятно. 

Тогда сделайте след.

Код

cd /home/neo/clt
javac Caesar.java
java -classpath . Caesar Calculator.java Calculator.caesar 3


пояснения

java -cp эквиваленто java -classpath

-classpath указывает java где искать классы
'-classpath .' указывает что классы в текущей директории

Автор: neo03 13.9.2011, 16:10
Спасибо большое. Все получилось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)