2014년 5월 16일 금요일

자바 랜덤 함수를 이용해서 간단하게 랜덤 문자열을 생성해보자.

웹통신시 간단하게 암호화 처리를 위해서, 자바에서 제공하는 랜덤 문자열 생성 함수가 있는지 잠시 찾아보니
없는것 같아(오래찾아보지 않아서 있는지 없는지 모르겠다) 고민하던 중 자바의 기본 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 
    { 
             //여기에서 생성하는 정수의 값이 클수록 긴 랜덤 문자열이 만들어진다
        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); 
    } 
}

첨부 파일의 패키지명등을 적절하게 변경하지 않으면 오류가 날것이다.


댓글 없음:

댓글 쓰기