문제

나는 자동차 원격 진입 시스템에 관한 기사를 발견했다. http://auto.howstuffworks.com/remote-entry2.htm 세 번째 총알에서 저자는 말합니다.

송신기와 수신기는 모두 동일한 의사 랜덤 번호 생성기를 사용합니다. 송신기가 40 비트 코드를 보내면 의사 랜덤 번호 생성기를 사용하여 메모리에 저장하는 새 코드를 선택합니다. 다른 한편으로, 수신기가 유효한 코드를 수신 할 때 동일한 의사 랜덤 번호 생성기를 사용하여 새 코드를 선택합니다. 이러한 방식으로 송신기와 수신기는 동기화됩니다. 수신기는 예상하는 코드를 수신하는 경우에만 문을 엽니 다.

동시에 동일한 랜덤 숫자를 생성하는 두 개의 PRNG 함수를 가질 수 있습니까?

도움이 되었습니까?

해결책

PRNG 함수에서, 함수의 출력은 동일한 시드 값이 주어진 연속적인 호출로부터 동일한 출력이 제공되도록 '시드'값에 의존한다. 그래서 그렇습니다.

예제 (C#사용)는 다음과 같습니다.

// Provide the same seed value for both generators:
System.Random r1 = new System.Random(1);
System.Random r2 = new System.Random(1);

// Will output 'True'
Console.WriteLine(r1.Next() == r2.Next());

이것은 물론 값을 생성하기 위해 일종의 결정 론적 공식을 사용하여 랜덤 번호 생성기에 달려 있습니다. 세대에서 엔트로피 또는 노이즈의 특성을 사용하는 소위 'True Random'숫자 생성기를 사용하는 경우 엔트로피 상태를 복제 할 수 없다면 일부 입력이 주어진 동일한 값을 생성하기가 매우 어려울 것입니다. 두 가지 모두 기능에 대한 호출 - 물론 그러한 발전기 사용의 목적을 물리 칠 것입니다 ...

원격 키리스 엔트리 시스템의 경우이 기능을 활용하기 위해 결정 론적 인 PRNG 기능을 사용할 가능성이 높습니다. 전자 회로에 임의의 숫자를 생성하기 위해 이러한 종류의 기능을 제공하는 많은 IC가 있습니다.

편집 : 요청시, 지정된 종자 값에 의존하지 않는 비 결정적 임의 번호 생성기의 예는 다음과 같습니다. 양자 무작위 번호 생성기. 물론, Freespace가 주석에서 지적했듯이, 이것은 진정한 임의의 숫자를 생성하기 때문에 의사 란덤 번호 생성기가 아닙니다.

다른 팁

대부분의 PRNG는 씨앗, 다음 값을 생성하는 데 사용합니다. 내부 논리는 다음과 같습니다.

nextNumber = function(seed);
seed = nextNumber;

따라서 새 번호를 생성 할 때마다 씨앗이 업데이트됩니다. 동일한 알고리즘을 동일한 시드에 사용하는 두 개의 PRNG를 제공하는 경우 function(seed) 동일한 숫자로 평가할 것입니다 (대부분의 결정 론적이라는 점이 주어지면).

질문에 직접 적용 : 송신기는 코드를 선택하여 시드로 사용합니다. 수신기는 그것을받은 후 이것을 사용하여 생성기를 시드합니다. 이제 두 사람이 정렬되어 동일한 값을 생성합니다.

Erik과 Claudiu가 말했듯이, PRNG를 동일한 값으로 시드하는 한 AD는 같은 출력으로 끝납니다.

PRNG의 기초로 AES (또는 기타 암호화 알고리즘)를 사용할 때 예를 볼 수 있습니다. 장치 (송신기 및 수신기) 모두에서 일치하는 입력을 계속 사용하는 한 출력도 일치합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top