이의 내가 있다고 가정 해 봅시다 종자 수있는이 키 내가 time()
과 키와 함께 C++로 srand()
를 사용하여 종자 어떻게어떻게 시간부터 srand(), 키 (문자열)
string key = "WID%ij38(@$151#3da=="
?
키가 문자열이기 때문에 srand(time(NULL)*key))
을 수행 할 수 없습니다.
어쨌든 변환 하시겠습니까?
이의 내가 있다고 가정 해 봅시다 종자 수있는이 키 내가 time()
과 키와 함께 C++로 srand()
를 사용하여 종자 어떻게어떻게 시간부터 srand(), 키 (문자열)
string key = "WID%ij38(@$151#3da=="
?
키가 문자열이기 때문에 srand(time(NULL)*key))
을 수행 할 수 없습니다.
어쨌든 변환 하시겠습니까?
당신은 문자열
srand(std::hash<std::string>{}(key));
글쎄, 질문은'time (NULL)'과 결합해야한다. XOR이 최선의 방법 일 것이다. 더 까다로운 비트에 대한 좋은 해결책은 +1. 예를 들어, Visual C++의 라이브러리는 문자열을 따라 10 문자 만 쌓아서 보았습니다 (긴 문자열에 대해 예측 가능하고 빠른 성능을 제공하지만 잠재적으로 중요한 비용을 제공하는 것처럼 보입니다. 충돌). 암호화 해시는 훨씬 더 무작위입니다. –
엄격하므로, the argument to srand
must be an unsigned int
에게 해싱 시도 할 수 있습니다. 이제 캐릭터 문자열을 가져와 unsigined int
을 제공하는 해시를 만들고 그로부터 작업 할 수 있습니다.
물론 보안상의 이유로 엔트로피를 늘리려는 경우, 특히 문자열이 고정되어 있거나 어떤 식 으로든 사용자로부터 오는 경우 엔 실망 할 수 있습니다.
'key'문자열 길이를 시도 할 수 있습니다. – Himanshu