📄 rand_add.pod
字号:
=pod=head1 NAMERAND_add, RAND_seed, RAND_status, RAND_event, RAND_screen - addentropy to the PRNG=head1 SYNOPSIS #include <openssl/rand.h> void RAND_seed(const void *buf, int num); void RAND_add(const void *buf, int num, double entropy); int RAND_status(void); int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam); void RAND_screen(void);=head1 DESCRIPTIONRAND_add() mixes the B<num> bytes at B<buf> into the PRNG state. Thus,if the data at B<buf> are unpredictable to an adversary, thisincreases the uncertainty about the state and makes the PRNG outputless predictable. Suitable input comes from user interaction (randomkey presses, mouse movements) and certain hardware events. TheB<entropy> argument is (the lower bound of) an estimate of how muchrandomness is contained in B<buf>, measured in bytes. Details aboutsources of randomness and how to estimate their entropy can be foundin the literature, e.g. RFC 1750.RAND_add() may be called with sensitive data such as user enteredpasswords. The seed values cannot be recovered from the PRNG output.OpenSSL makes sure that the PRNG state is unique for each thread. Onsystems that provide C</dev/urandom>, the randomness device is usedto seed the PRNG transparently. However, on all other systems, theapplication is responsible for seeding the PRNG by calling RAND_add(),L<RAND_egd(3)|RAND_egd(3)>or L<RAND_load_file(3)|RAND_load_file(3)>.RAND_seed() is equivalent to RAND_add() when B<num == entropy>.RAND_event() collects the entropy from Windows events such as mousemovements and other user interaction. It should be called with theB<iMsg>, B<wParam> and B<lParam> arguments of I<all> messages sent tothe window procedure. It will estimate the entropy contained in theevent message (if any), and add it to the PRNG. The program can thenprocess the messages as usual.The RAND_screen() function is available for the convenience of Windowsprogrammers. It adds the current contents of the screen to the PRNG.For applications that can catch Windows events, seeding the PRNG bycalling RAND_event() is a significantly better source ofrandomness. It should be noted that both methods cannot be used onservers that run without user interaction.=head1 RETURN VALUESRAND_status() and RAND_event() return 1 if the PRNG has been seededwith enough data, 0 otherwise.The other functions do not return values.=head1 SEE ALSOL<rand(3)|rand(3)>, L<RAND_egd(3)|RAND_egd(3)>,L<RAND_load_file(3)|RAND_load_file(3)>, L<RAND_cleanup(3)|RAND_cleanup(3)>=head1 HISTORYRAND_seed() and RAND_screen() are available in all versions of SSLeayand OpenSSL. RAND_add() and RAND_status() have been added in OpenSSL0.9.5, RAND_event() in OpenSSL 0.9.5a.=cut
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -