写在前面的话“
很早以前遇到的问题:
这两天做一个调度器,不自觉又遇到了,再次解决了一下。为免忘记,记录下来。
=================================================================================================
SCO OpenServer 5.0.6 或更早的系统,使用 OpenSSL 0.9.6 及以前的老版本,没有问题,但使用 OpenSSL 0.9.7 或更新的版本,则无法生成加密信息,曾在 CU 论坛上发帖求助,一直没有解决掉。但项目又必须要解决这个问题,没有办法,只能是笨功解决。
读源码,读 OpenSSL 0.9.7 的源码。
通过反复研读,发现 OpenSSL 0.9.7 或更新的版本,改变了随机数的生成方式,在 OpenSSL 0.9.6 或更老的版本上,使用的是 rand 函数生成的伪随机数作为加密种子,但在 OpenSSL 0.9.7 或更新的版本上则是驱动 /dev/random 设备来生成一个真实的随机数来做为加密种子。而 SCO OpenServer 5.0.6 或更早的操作系统是没有这个设备文件的,也就当然无法通过这个设备来生成随机数了。
明白了原理,我们就可以想办法来解决了。直接建立两个设备文件即了。
执行如下:
# mknod /dev/random c 1 8
#mknod /dev/urandom c 1 9
问题解决。
阅读(1733) | 评论(0) | 转发(0) |