2014-10-09 2 views
1

현재 일부 암호화 (이 경우 RSA 공개 키)를 사용 중입니다. 임의의 키를 생성하려면 임의의 입력이 필요합니다. 나는 마이크가 상대적으로 재연 불가능한 데이터를위한 좋은 소스라고 생각했다. 시드 데이터를 사용할 수있는 방식으로 마이크에서 원시 데이터를 읽을 수있는 방법이 있습니까? 순전히 무작위로 씨앗을 얻는 더 좋은 방법이 있습니까? 그렇다면 어떻게해야합니까?무작위 시드로 C++ 마이크 입력

저는 내장 마이크가있는 랩톱에서 Windows 8을 실행 중이며 g ++ 컴파일러를 사용하고 있습니다.

+0

난수 생성에 대한 게시물이 많이 있습니다. 먼저 검색해보십시오. 마이크를 사용하려는 경우 마이크 입력을 읽는 것에 대한 게시물이 많이있는 것 같습니다. 이들을 함께 넣으려고하면이 질문을 업데이트하거나 남아있는 특정 문제가있는 다른 질문을 게시하십시오. –

+0

가능한 복제본 [C++ 무작위 부동 소수점 생성] (http://stackoverflow.com/questions/686353/c-random-float-number-generation) –

+0

'srand'로 c 표준 라이브러리 함수를 의미하는 경우에는 다음을 입력하십시오. 그것을 사용하지 마십시오. c의'rand'는 보안에 관해서가 아니라 통계적으로 좋은 난수가 필요할 때조차도 빤다. – CodesInChaos

답변

1

마십시오 아니요 하드웨어에서 시드를 직접 가져 오십시오. OS는 품질의 무작위성을 얻는 방법에 대해 당신보다 훨씬 많이 알고 있습니다. 리눅스에

는 올바른 방법은 /dev/urandom 읽는 것입니다 (하지 /dev/random를, 실제로 쓸모가)

Windows에서

이, 구글은 당신이 CryptGenRandom 기능을 사용해야 함을 나타냅니다.

+0

예를 들어, 다음과 같은 몇 가지 추가 엔트로피를 추가해도 거의 해가 없습니다. 엔트로피 'CryptGenRandom'에 마이크가 제공됩니다. 서로 다른 소스에서 엔트로피를 혼합하는 방법에 대한 Fortuna CSRNG의 코드를 살펴보십시오. 제안 된 소스가 얼마나 무작위인지 확인하는 시간을내어주십시오. – rossum