【发布时间】:2014-06-05 08:22:01
【问题描述】:
我已经从OpenSSL Page(2014 年 4 月 7 日发布)下载了最新的源代码,并使用Tutorial 创建了一个 libcrypto.a 库,我按照运行 ./build- 的步骤进行操作openssl.sh 脚本文件,用于在版本 10.9.2 的 Mac OS X 上为所有环境(armv7s、armv7、i386)生成 libcrypto.a 文件。
我可以使用 EVP_aes_256_cbc 加密来加密/解密日期,但是当我尝试获取 RAND_byte 时我的代码失败了。代码在 RAND_byte 调用时崩溃。
以下是我正在尝试获取 RAND_byte 种子的代码:
// 代码1
unsigned char seed[32];
RAND_bytes(seed, 32);
// 代码2
int count = 24;
unsigned char *buffer = (unsigned char *)calloc(count, sizeof(unsigned char));
RAND_bytes(buffer, count);
// 代码3
int count = 24;
unsigned char *buffer = (unsigned char *)malloc(sizeof(int)*count);
RAND_bytes(buffer, count);
// 代码4
int count = 24;
unsigned char *buffer = OPENSSL_malloc(count);
RAND_bytes(buffer, count);
当我在 iOS 6.0/6.1 模拟器上运行上述代码时,它在 RAND_byte 调用时崩溃,我在线程 1 上得到 “_interposition_vtable_unimplemented”,并且控制台上没有显示任何消息。
当我在 iOS 7.0+ 模拟器上运行相同的代码时,它在 RAND_byte 调用时崩溃,我在线程 1 上得到 “__pthread_kill” 和 “检测到尝试在iPhone 上不存在的系统库:从图像 CryptographyTest 中的函数 RAND_poll 调用的 open$UNIX2003。” 在控制台上。
但是,当我在装有 iOS 7.0.4 的 iPad 上运行相同的代码时,上述所有代码都可以完美运行。我从 RAND_byte 得到的返回值是 1。
我不明白某些功能在 iOS 模拟器上不起作用但一切都适用于 iOS 设备的行为。
非常感谢任何帮助!非常感谢。
【问题讨论】:
标签: iphone macos openssl ios-simulator ios6.1