package sample.crypto;import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ByteArrayOutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;public final class MessageDigestSample
extends Object
{
public static void main(String[] args)
throws IOException,
NoSuchAlgorithmException
{
MessageDigest digest = null;
byte[] source = null;
byte[] result = null; String resultFileName = null; for (int i = 0; i<CRYPTOGRAPHERS.length; i++)
{
resultFileName =
RESULT_FILE_NAME+CRYPTOGRAPHERS[i]+".txt"; digest = MessageDigest.getInstance(CRYPTOGRAPHERS[i]);
source = loadSource(getSourceFile());
digest.update(source);
result = digest.digest();
saveResult(result, resultFileName);
}
} private static byte[] loadSource(File file)
throws IOException
{
FileInputStream inFile = new FileInputStream(file);
ByteArrayOutputStream outByteArray =
new ByteArrayOutputStream();
int i = -1;
while ((i = inFile.read())!=-1)
outByteArray.write((byte)i);
return outByteArray.toByteArray();
} private static void saveByteArray(
byte[] byteArray,
String fileName)
throws IOException
{
FileOutputStream outFile =
new FileOutputStream(fileName);
outFile.write(byteArray);
outFile.close();
} private static byte[] loadByteArray(
String fileName)
throws IOException
{
FileInputStream inFile = new FileInputStream(fileName);
ByteArrayOutputStream outByteArray =
new ByteArrayOutputStream();
int i = -1;
while ((i = inFile.read())!=-1)
outByteArray.write((byte)i);
byte[] byteArray = outByteArray.toByteArray();
inFile.close();
outByteArray.close();
return byteArray;
} private static void saveResult(
byte[] result,
String fileName)
throws IOException
{
saveByteArray(result, fileName);
} private static byte[] loadResult(
String fileName)
throws IOException
{
return loadByteArray(fileName);
} private static File getSourceFile()
throws IOException
{
return new File("Source.txt");
} private static final String[] CRYPTOGRAPHERS =
new String[]
{
"MD5",
"SHA"
}; private static final String RESULT_FILE_NAME =
"MessageDigestResult_"; private MessageDigestSample()
{
super();
}
}