package kr.debop4j.core.cryptography;
import lombok.extern.slf4j.Slf4j;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
/**
* 암호화 관련 Helper Class
*
* @author 배성혁 ( sunghyouk.bae@gmail.com )
* @since 12. 9. 14
*/
@Slf4j
public abstract class CryptoTool {
private static final String RANDOM_NUMBER_GENERATION = "SHA1PRNG";
private static final SecureRandom random;
static {
try {
random = SecureRandom.getInstance(RANDOM_NUMBER_GENERATION);
} catch (NoSuchAlgorithmException e) {
log.error("해당 난수 발생 알고리즘을 찾을 수 없습니다. algorithm=" + RANDOM_NUMBER_GENERATION);
throw new RuntimeException(e);
}
}
private CryptoTool() { }
/**
* 난수를 byte array 에 채웁니다.
*
* @param numBytes 바이트 수
* @return 난수가 채워진 byte array
*/
public static byte[] getRandomBytes(final int numBytes) {
assert (numBytes >= 0);
byte[] bytes = new byte[numBytes];
if (numBytes > 0)
random.nextBytes(bytes);
return bytes;
}
}