Java 프로그램에서 SHA-1 hash 암호화 알고리즘을 사용하는 모듈이 필요하여 작성하였다.
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/*
* SHA is a cryptographic message digest algorithm similar to MD5.
* SHA-1 hash considered to be one of the most secure hashing functions,
* producing a 160-bit digest (40 hex numbers) from any data with a maximum size of 264 bits.
* While Java has built in classes to compute SHA 1 hash,
* it's quite uneasy to use them for a simple task
* -- calculate SHA-1 hash and return 40 byte hexadecimal string.
*
* Compatibility: compatible with Sun Java 1.4 or higher.
*/
public class SimpleSHA1
{
// 아래 코드는 버퍼의 크기가 문자열의 크기만큼 되어서 효율적이지 않다.
// 보다 좋은 성능을 내기 위해서는 buffer size 를 정해서 작성할 필요가 있다. (i.e. 1025 bytes)
private static String convertToHex(byte[] data)
{
StringBuffer buf = new StringBuffer();
for (int i = 0; i < data.length; i++)
{
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do
{
if ((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char) ('0' + halfbyte));
else
buf.append((char) ('a' + (halfbyte - 10)));
halfbyte = data[i] & 0x0F;
} while(two_halfs++ < 1);
}
return buf.toString();
}
// 아래의 코드는 단순히 문자열을 SHA1 해쉬 값을 구해주는 코드이다.
public static String SHA1(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException
{
MessageDigest md;
md = MessageDigest.getInstance("SHA-1");
byte[] sha1hash = new byte[40];
md.update(text.getBytes("iso-8859-1"), 0, text.length());
sha1hash = md.digest();
return convertToHex(sha1hash);
}
public static void main(String [] args)
{
String test = "This is a test message to be digested. gulping.... gulping.... grunting.... belching.....";
try
{
System.out.println("Digested message by SHA1:" + SimpleSHA1.SHA1(test));
}
catch(Exception e){}
}
}
'Programming > Java' 카테고리의 다른 글
Java Remove all white spaces in String (문자열에서 모든 white space 제거하기) (0) | 2011.11.09 |
---|---|
Java 로 구현한 DFS (Depth First Search) 알고리즘 (0) | 2011.11.09 |
Java Singleton Pattern (0) | 2011.11.09 |
Eclipse 에서 JVM(Java Virtual Machine) Heap Size 조정해서 실행하기 (0) | 2011.11.09 |
Java Deamonize Program jsvc JVM Heap Memory 설정법 (0) | 2011.11.09 |