2014-12-01 3 views
0

반응 형 프로그래밍에서 다이빙을 시도하고 있습니다. 그래서 나는 베이컨 자바 스크립트 라이브러리를 사용하여 RSA 암호화로 간단한 대화를 만들기로 결정했다.Bacon.js로 임의 번호 스트림

내가 가지고있는 질문 : Bacon으로 임의의 번호를 만드는 가장 좋은 방법은 무엇입니까? 나는 임의의 수 스트림을 임의의 소수 스트림으로 필터링하려고합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

답변

1

저는 베이컨 스트림이이 용도로 사용하는 것이 옳지는 않지만 여기에서 어떻게 할 수 있는지 알려드립니다.

function makeRandomNumber() { 
    return Math.random(); 
} 

function makeRandomStream() { 
    return Bacon.fromBinder(function(sink) { 
    while(sink(makeRandomNumber()) === Bacon.more) {} 
    return function() {}; 
    }); 
} 

// example of using the random stream 
makeRandomStream().filter(function(x) { 
    return x > 0.5; 
}).take(5).onValue(function(x) { 
    console.log('random number', x); 
}); 

makeRandomStream()은 매번 새로운 Bacon 스트림을 반환합니다. 동일한 난수 스트림에 여러 구독자를 연결하지 않으려면 여러 위치에서 동일한 난수를 다시 사용할 수 있습니다. 또한 항상 난수 스트림으로부터 동 기적으로 가입을 취소해야합니다. 먼저 다른 스트림과 결합하려고하지 마십시오. 그렇지 않으면 임의의 숫자 스트림이 무제한 임의의 숫자를 생성하므로 나머지 코드가 실행되지 않도록 차단합니다.

그리고 암호 용도로는 Math.random 대신 window.crypto.getRandomValues을 사용하고 싶을 것입니다.

+0

이 스트림을 다른 스트림과 매핑하여 얻은 일부 스트림을 결합하려고하면 어떻게 될까요? – gyzerok

+0

gyzerok : 구체적인 예를 들어, 아마도 jsFiddle이 있다면 도움이 될 것입니다. 이 스트림에 대한 구체적인 유스 케이스를 찾는 데 문제가 있습니다. – OlliM

+0

https://github.com/gyzerok/reactive-cryptochat/blob/master/rsa.js 저는이 스트림을 사용하여 내 rsa 채팅 응용 프로그램의 e, d 및 m 값을 생성합니다. 도와 주셔서 감사합니다. – gyzerok