Chinaunix首页 | 论坛 | 博客
  • 博客访问: 830476
  • 博文数量: 137
  • 博客积分: 3477
  • 博客等级: 中校
  • 技术积分: 1409
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-30 21:53
文章分类

全部博文(137)

文章存档

2024年(8)

2023年(10)

2022年(4)

2021年(10)

2020年(9)

2018年(1)

2017年(1)

2014年(4)

2013年(3)

2012年(12)

2011年(24)

2010年(2)

2009年(8)

2008年(6)

2007年(34)

2006年(1)

分类: C/C++

2013-07-12 22:01:00

写在前面的话“

很早以前遇到的问题:

这两天做一个调度器,不自觉又遇到了,再次解决了一下。为免忘记,记录下来。
=================================================================================================
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

问题解决。
阅读(1739) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~