/*
* 練習問題20.3 p.454
* バイトを何らかの値とXORするなど、どのようなアルゴリズムでも良いので、
* バイトを暗号化する一組のFilterストリームクラスであるDecryptInputStreamとEncryptOutputStreamを
* 作成しなさい。
* DecryptInputStreamは、EncryptOutputStreamクラスが生成したバイトを復号化します。
*/
package ch20.ex20_03;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilterReader;
import java.io.FilterWriter;
import java.io.Writer;
public class EncryptOutputStream extends FilterWriter
{
protected EncryptOutputStream(Writer out)
{
super(out);
}
public void write(int c)
{
try
{
super.write(c^7);
}
catch(Exception e)
{
System.out.println(e);
}
}
public static void main(String[] args)
{
FileWriter filewriter = null;
try
{
filewriter = new FileWriter("JPL/ch20/ex20_03/test.txt");
}
catch(Exception e)
{
System.out.println(e);
}
EncryptOutputStream test = new EncryptOutputStream(filewriter);
test.write('a');
test.write('b');
test.write('c');
try
{
test.flush();
}
catch(Exception e)
{
System.out.println(e);
}
FileReader src = null;
try
{
src = new FileReader("JPL/ch20/ex20_03/test.txt");
}
catch(Exception e)
{
System.out.println(e);
}
FilterReader f = new DecryptInputStream(src);
int c;
try
{
while ((c = f.read()) != -1)
{
System.out.print((char)c);
}
}
catch(Exception e)
{
System.out.println(e);
}
System.out.println();
}
}