4
(C++ 웹 서버용) 세션 ID를 생성해야합니다. 어떤 종류의 난수와 해시를 세션의 초기 IP 주소와 타임 스탬프로 사용하려고 생각했습니다.보안 세션 ID를 생성하는 방법
이렇게하면 추측 할 수없는 적절한 ID가 생성됩니까? 좋은 랜덤 생성 알고리즘 (부스트 - 랜덤에 의해 구현되는 가장 바람직한 알고리즘)은 무엇입니까? Boost example :
boost::random::random_device generator_;
boost::random::uniform_int_distribution<boost::uint_least64_t> distribution_;
나는 이걸 직접 테스트 해 보았고 Boost 무작위 라이브러리의 버전 관리에 문제가 많았으므로 최신 버전을 사용하면 문제가 발생하지 않는다. 그러나 부스트 랜덤 라이브러리를 사용하고 싶지 않다면, 간단하게 rand()와 srand()를 사용하여 숫자를 생성하고 읽을 수있는 값으로 바꿀 수 있습니다 (구속 조건으로 가정). 대부분 '안전'하지만, 실제로 얼마나 필요한지에 달려 있습니다. – Trickfire
std :: rand() 구현이 그러한 목적에 유용하지 않을 수도 있다고 들었 기 때문에 boost 솔루션을 사용할 것입니다. 귀하의 답변에 감사드립니다. –
당신은 정확할 것이고, 약간의 rand() 구현은 다소 빈약하게 순환 할 것이며, mod를 사용하면 배포본을 약간 비뚤어지게 할 수 있습니다. 시딩을 언급하는 것은 물론 가능한 시드 값을 극적으로 줄일 수 있습니다. 모든 것은 진정으로 무작위로 당신이 필요로하는 방법에 달려 있습니다. – Trickfire