난수 생성기 시스템을 구현하려고합니다. (어떻게 든해야 할 일은Java BigInteger를 고정 길이로 축소하십시오.
811203900027758629330492243480887228261034167773619203962320290854945165232584286910163772258660
:
String start = "abc";
String hash = utils.SHA1(start); //Generates an SHA1 hash of the string
byte[] bytes = hash.getBytes();
BigInteger big = new BigInteger(bytes);
이 코드의 값 인 BigInteger를 생성 본질적으로 그때를 BigInteger 값으로 변환 누가 받 SHA1 해시에 읽고 있어요 그리고 이것은 내가 혼란스러워하는 곳이다), 고정 소수 자릿수로 그 수를 훨씬 더 짧은 수로 줄인다.
모듈러 연산과 Java 수학 API 함수를 함께 사용하면이 숫자를 3 자리 숫자로 줄일 수 있습니다. 또는 내가 선택한 다른 길이의 번호.
나는 지금 막 엄청난 수를 String으로 변환 한 다음 원하는 수의 길이의 부분 문자열을 취하고 있습니다. 그러나 나는 그 숫자가 3 자리수로 다소 제한되어 있기 때문에 무작위 적이 지 않아서 나는 이것에 완전히 만족하지 않는다.
새로 만든 임의의 x 자릿수를 기수 36을 사용하여 문자열로 변환하여 ASCII 알파벳 문자를 포함하는 것이 모든 목적입니다.
모든 정보 또는 조언을 주시면 감사하겠습니다.
감사합니다.
그래서 3 자릿수를 원하지만 제한되어 있기 때문에 3 자릿수를 원하지 않습니까? 나는 이해하지 못한다 ... – m0skit0
그는 x 자리를 원한다. 상황에 따라 ... – DaveFar
그 정수는 해시 값 'a9993e364706816aba3e25717850c26c9cd0d89d'의 ASCII 16 진수 표현이므로 필요에 따라 두 배가된다. 위의 인터넷 검색은 그것이 ... 글쎄, 당신이 직접 구글의 해시임을 보여줍니다. –