공개 키와 개인 키에 대해 큰 난수를 생성하려고합니다. 클라이언트 측에서 임의의 256 비트 개인 키를 생성하는 초기 시드에 문제가 있습니다. 아시다시피 C에서 사용 rand
하거나 srand
기능을 사용하면 안됩니다 . 왜냐하면 깨지기 쉽기 때문입니다.
임의의 256 비트 개인 키를 생성하기 위해 임의의 시드를 생성하려면 어떻게해야합니까?
GMP의 선형 합동 알고리즘을 사용하여 C에서 난수를 생성합니다.
유닉스 시스템 에서는 "무작위"바이트 시퀀스를 얻기 위해 /dev/random
및 /dev/urandom
파일을 읽을 수 있습니다 . 이러한 시퀀스는 시스템 엔트로피를 기반으로합니다. 참조 이 자신의 차이점에 대한 자세한 내용은 게시물을.
#include <unistd.h> // read
#include <fcntl.h> // open
#include <stdio.h> // printf
int main(void)
{
int fd;
unsigned int seed;
fd = open("/dev/urandom", O_RDONLY);
read(fd, &seed, sizeof seed);
printf("%u\n", seed);
// Then you can use srand with your new random seed
return (0);
}
참고 : 열고 읽은 후 오류를 확인하고 fd
사용 후 닫는 것을 잊지 마십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다