웹통신시 간단하게 암호화 처리를 위해서, 자바에서 제공하는 랜덤 문자열 생성 함수가 있는지 잠시 찾아보니
없는것 같아(오래찾아보지 않아서 있는지 없는지 모르겠다) 고민하던 중 자바의 기본 Math.random() 함수를 약간 응용하여 간단하게 랜덤문자열을
생성 할 수 있는 클래스를 만들어보았다.
기본 힌트는
1. 랜덤함수로 임의의 숫자를 생성하고
2. 해당 숫자를 문자열로 바꾼다음에
3. 해당 문자를 다시 base64로 인코딩 하는것이다.
아래는 유틸클래스의 전체 내용이다.
base64인코딩/디코딩 관련한 클래스는 구글 안드로이드 IAP예제에서 제공되는 Base64클래스를 가져다 사용했다. 해당 클래스 파일을 첨부해놓는다.
package com.util.crypt;
import java.io.UnsupportedEncodingException;
import com.util.base64.Base64;
public class CRandomUtil {
//랜덤 양의 정수값 생성
public static int GetInt(int max)
{
return (int)(Math.random() * max);
}
//랜덤 0 ~ 1사이의 양의 실수값 생성
public static float GetFloat()
{
return (float)Math.random();
}
//랜덤 -1 ~ 1사이의 실수값 생성
public static float GetUnit()
{
return ((float)Math.random() * 2.0f) - 1.0f;
}
//랜덤 스트링 생성
public static String GetString() throws UnsupportedEncodingException
{
import java.io.UnsupportedEncodingException;
import com.util.base64.Base64;
public class CRandomUtil {
//랜덤 양의 정수값 생성
public static int GetInt(int max)
{
return (int)(Math.random() * max);
}
//랜덤 0 ~ 1사이의 양의 실수값 생성
public static float GetFloat()
{
return (float)Math.random();
}
//랜덤 -1 ~ 1사이의 실수값 생성
public static float GetUnit()
{
return ((float)Math.random() * 2.0f) - 1.0f;
}
//랜덤 스트링 생성
public static String GetString() throws UnsupportedEncodingException
{
//여기에서 생성하는 정수의 값이 클수록 긴 랜덤 문자열이 만들어진다
int val = GetInt(500000);
String sv = String.valueOf(val);
return Base64.encode(sv.getBytes("utf-8"));
}
//랜덤 스트링 생성(웹전송용)
public static String GetStringWebSafe() throws UnsupportedEncodingException
{
int val = GetInt(500000);
String sv = String.valueOf(val);
return Base64.encodeWebSafe(sv.getBytes("utf-8"), true);
}
}
int val = GetInt(500000);
String sv = String.valueOf(val);
return Base64.encode(sv.getBytes("utf-8"));
}
//랜덤 스트링 생성(웹전송용)
public static String GetStringWebSafe() throws UnsupportedEncodingException
{
int val = GetInt(500000);
String sv = String.valueOf(val);
return Base64.encodeWebSafe(sv.getBytes("utf-8"), true);
}
}
첨부 파일의 패키지명등을 적절하게 변경하지 않으면 오류가 날것이다.
댓글 없음:
댓글 쓰기