현재 위치 - 법률 상담 무료 플랫폼 - 특허 조회 - 자바 언어에서 무작위로 문자열을 생성하는 방법
자바 언어에서 무작위로 문자열을 생성하는 방법
UUID 또는 GUID 로 구현할 수 있습니다.

GUID 는 길이가 128 비트인 숫자로, 일반적으로 16 진수 16 으로 표시됩니다. 이 알고리즘의 핵심 아이디어는 시스템의 네트워크 카드, 현지 시간 및 난수를 결합하여 GUID 를 생성하는 것입니다. 이론적으로 기계가 초당 10000000 개의 GUID 를 생성하면 3240 년 동안 반복되지 않도록 보장할 수 있습니다.

UUID 는 1.5 의 새 클래스입니다. Java.util 에서 세계라는 고유 ID 를 생성하는 데 사용할 수 있습니다.

Java.util.uuid 가져오기

공용 클래스 테스트 {

공용 정적 void main(String[] args) {

Uuid uuid = uuid.randomuuid ();

System.out.println (uuid);

}

}

출력을 컴파일하고 실행합니다.

07ca3dec-b674-41d0-af9e-9c37583b08bb

Guid 와 uuid 를 생성하는 두 가지 방법

통신 로그 라이브러리가 필요합니다.

/* *

* @ 작성자 관리자

*

* TODO 이 생성된 유형 주석에 대한 템플릿을 변경하려면 로 이동하십시오

* 창-기본 설정-Java-코드 스타일-코드 템플릿

*/

Java.net.inetaddress 가져오기

Java.net.unknownhostexception 을 가져옵니다.

Java.security.messagedigest 가져오기

Java.security.nosuchalgorithm exception 가져오기

Java.security.securerandom 을 가져옵니다.

Java.util.random 을 가져옵니다.

공용 클래스 RandomGUID 확장 객체 {

Protectedfinalorg.apache.commons.logging.loglogger = org.apache.commons.logging.logfactory

。 Getlog (getclass ());

공용 문자열 valueBeforeMD5 =

공용 문자열 valueAfterMD5 =

개인 정적 랜덤 마이랜드;

Private static secure random mysecurerand;

개인 정적 문자열 s _ id

Private static final int pad _ below = 0x10;

Private static final int two _ bytes = 0xff;

/*

* 정적 블록 처리 일회용 안전 무작위 시드.

* SecureRandom 을 초기화하는 데 몇 초가 걸립니다. 여러분은

* 이 정적 블록 제거 또는 교체를 고려하고자 합니다

* 이 시간을 줄이기 위해 "첫 로드 이후 시간" 시드가 있습니다.

* 이 블록은 각 JVM 인스턴스에서 한 번만 실행됩니다.

*/

정적 {

Mysecurerand = new secure random ();

Long secure initializer = mysecurerand.nextlong ();

Myrand = newrandom (secure initializer);

시도 {

S_id = InetAddress.getLocalHost () 입니다. Tostring ();

} catch (UnknownHostException e) {

E. printstacktrace ();

}

}

/*

* 기본 생성자. 보안 옵션이 지정되지 않았기 때문에

* 이 생성자의 기본값은 낮은 보안, 고성능입니다.

*/

Public RandomGUID() {

GetRandomGUID(false););

}

/*

* 보안 옵션이 있는 생성자. 보안을 true 로 설정

* 생성된 각 난수를 암호화할 수 있도록 합니다

* 강력한 성능. 보안 휴가의 기본값은 표준 임의 함수의 초기 값입니다

* 암호화된 강력한 난수를 사용합니다.

*/

Public RandomGUID (부울 보안) {

GetRandomGUID (보안);

}

/*

* 임의 GUID 생성 방법

*/

개인 void getRandomGUID (부울 보안) {

MessageDigest MD5 = null

Stringbuffer sbvaluebefore MD5 = new stringbuffer (128);

시도 {

Md5 = messagedigest.getinstance ("MD5");

} catch (no such algorithm exception e) {

Logger.error ("error:"+e);

}

시도 {

Longtime = system.currenttimemillis ();

장란트 = 0;

(보안) {

Rand = mysecurerand.nextlong ();

} 그렇지 않으면 {

Rand = myrand.nextlong ();

}

Sbvaluebeformd5.append (s _ id);

Sbvaluebeformd5.append (":");

Sbvaluebeformd5.append (long.tostring (time));

Sbvaluebeformd5.append (":");

Sbvaluebeformd5.append (long.tostring (rand));

Valuebefore MD5 = sbvaluebefore md5.tostring ();

Md5.update (valuebeforemd5.getbytes ());

Byte [] array = md5.digest ();

Stringbuffer sb = 새 stringbuffer (32);

For(int j = 0;; J< 배열. 길이 ++j) {

Int b = array [j] & 2 바이트

If(b & lt;; PAD_BELOW)

Sb.append ('0');

Sb.append (integer.to hex string (b));

}

Valueaftermd5 = sb.tostring ();

} catch (예외 e) {

Logger.error ("error:"+e);

}

}

/*

* GUID 표준 형식으로 변환

* (SQL Server UniqueIdentifiers 등에 유용합니다. ) 을 참조하십시오

* 예: c2feeac-cfcd-11d1-8b05-00600806d9b6

*/

공용 문자열 toString() {

Stringraw = valueaftermd5.touppercase ();

Stringbuffer sb = new stringbuffer (64);

Sb.append (raw.substring (0,8));

누군가 추가 ("-");

Sb.append(raw.substring(8,12));

누군가 추가 ("-");

Sb.append (raw.substring (12,16));

누군가 추가 ("-");

Sb.append (raw.substring (16,20));

누군가 추가 ("-");

Sb.append (raw.substring (20));

Returnsb.tostring ();

}

//클래스 데모 및 자체 테스트

공용 정적 void main(String args[]) {

For(int I = 0;; 나< 100; I++) {

Randomguid myguid = new randomguid ();

System.out.println ("seedingstring ="+myguid.valuebeforemd5);

System.out.println ("rawguid ="+myguid.valueaftermd5);

System.out.println ("randomguid ="+myguid.tostring ());

}

}

}