입니다. 따라서 다음과 같은 방법으로 암호를 생성하는 것은 좋지 않습니다. 나는 그것이 엔트로피의 약간 (아마 5 정도 정도의) 비트만을 가지고 있다고 말하고 싶지만, 나는 그것을 정확하게 계산할 수 없다.이 방법으로 생성 된 엔트로피 암호의 수 (또는 약간)는
오라클의 JDK 7을 사용하여 다음과 같은 방법으로 생성 된 길이 n의 암호를 추측하는 데 필요한 평균 시도를 계산하는 방법을 보여줄 수 있습니까? 반올림
- 알파벳 크기 : 나는 관련 요인은 가정 정수,
- Math.random() 본질 속성
- 문자를 샘플링하는 try-until-succeed 방법입니다.
하지만 정확한 숫자를 얻을 수 없습니다. Math.random()
예측할이라고 가정
char[] generate(int n) {
char[] pw = new char[n];
for (int i = 0; i < n; i++) {
int c;
while (true) {
c = randomCharacter(c);
if (c == '0' || c == 'O' || c == 'I' || c == '1' || c == 'l')
continue;
else
break;
}
pw[i] = (char) c;
}
return pw;
}
int randomCharacter(int c) {
switch ((int) (Math.random() * 3)) {
case 0:
c = '0' + (int) (Math.random() * 10);
break;
case 1:
c = 'a' + (int) (Math.random() * 26);
break;
case 2:
c = 'A' + (int) (Math.random() * 26);
break;
}
return c;
}
'Math.random'의 고유 속성은 구현에 따라 다릅니다. 당신은 하나를 지정하지 않았습니다. 당신도 언어를 지정하지 않았다 (자바). – CodesInChaos
좋은 지적으로, 나는 태그 한도를 사용하여 다른 곳에 언급하는 것을 잊어 버렸다. –