官网openssl-3.0.2.tar.gz版本源码:链接:https://pan.baidu.com/s/1iEv2X_99X3p3jyQnOx1C8g 
提取码:61x9

使用过的源码:链接:https://pan.baidu.com/s/1l5WcdyeeTypxLDapuXV2Mg 
提取码:xth1

生成的openssl:链接:https://pan.baidu.com/s/1rIUIT1o8y_h1L0O7hsCKrA 
提取码:8ct2

编译的脚本文件

./Configure linux-generic32  \
no-asm  \
shared \
no-async \
--with-rand-seed=devrandom     \
--prefix=/opt/TestOpenSSL/openssl-build/openssl-generic32 \
CROSS_COMPILE=/opt/arm-2014/bin/arm-none-linux-gnueabi- \
CC=gccmake -j8
make install -j8

其中:

linux-generic32:32位的版本运行
no-asm:不使用汇编代码
shared:生成动态连接库
no-async:非异步,交叉工具链没有提供GNU C的ucontext库时使用此选项
--with-rand-seed=devrandom:使用随机数生成的设备"/dev/urandom","/dev/random","/dev/srandom"
--prefix=/opt/TestOpenSSL/openssl-build/openssl-generic32:生成目录
CROSS_COMPILE=/opt/arm-2014/bin/arm-none-linux-gnueabi-:交叉编译器路径
CC=gcc:指定gcc编译make -j8
make install -j8

注意,由于我是使用RSA加密,所以会用到随机数生成,一开始我没有指定这一句话,我进行openssl移植测试命令./openssl speed rsa1024,程序迟迟不见返回,也未结束,使用strace跟踪后发现是打开/dev/random,之后select后阻塞了,然后我打开源码调试后发现,程序阻塞在路径:

rsa_ossl.c开始:
rsa_ossl_public_encrypt->ossl_rsa_padding_add_PKCS1_type_2_ex->RAND_bytes_ex->RAND_get0_public->RAND_get0_primary->rand_new_drbg->EVP_RAND_instantiate->evp_rand_instantiate_locked

所以我去看了一下install.md,其中写道


Seeding the Random Generator
------------------------------with-rand-seed=seed1[,seed2,...]A comma separated list of seeding methods which will be tried by OpenSSL
in order to obtain random input (a.k.a "entropy") for seeding its
cryptographically secure random number generator (CSPRNG).
The current seeding methods are:### osUse a trusted operating system entropy source.
This is the default method if such an entropy source exists.### getrandomUse the [getrandom(2)][man-getrandom] or equivalent system call.[man-getrandom]: http://man7.org/linux/man-pages/man2/getrandom.2.html### devrandomUse the first device from the `DEVRANDOM` list which can be opened to read
random bytes.  The `DEVRANDOM` preprocessor constant expands to"/dev/urandom","/dev/random","/dev/srandom"on most unix-ish operating systems.### egdCheck for an entropy generating daemon.
This source is ignored by the FIPS provider.### rdcpuUse the `RDSEED` or `RDRAND` command if provided by the CPU.### librandomUse librandom (not implemented yet).This source is ignored by the FIPS provider.### noneDisable automatic seeding.  This is the default on some operating systems where
no suitable entropy source exists, or no support for it is implemented yet.
This option is ignored by the FIPS provider.For more information, see the section [Notes on random number generation][rng]
at the end of this document.

这个默认不配置,所以默认情况应该是--with-rand-seed=os,由操作系统分配,使用的是/dev/random,按理说是最好的选择,

  • /dev/random 是真随机数生成器,它会消耗熵值来产生随机数,同时在熵耗尽的情况下会阻塞,直到有新的熵生成.
  • /dev/urandom 是伪随机数生成器,它根据一个初始的随机种子(这个种子来源就是熵池中的熵)来产生一系列的伪随机数,而并不会在熵耗尽的情况下阻塞。

熵池就是系统当前的环境噪音,环境噪音的来源很多,键盘的输入、鼠标的移动、内存的使用、文件的使用量、进程数量等等。当系统的熵不够大的时候,则系统产生的随机数随机效果就不是很好,也就是说更容易被人猜测出来。

由于我们使用的是random,又没有输入、鼠标、内存的使用,所以在一开始的时候就会阻塞,但是如果此时你开始点击屏幕,开始进行U盘的导入导出,扩大熵池,那么程序将没有问题,为了避免程序异常,所以只能切换成--with-rand-seed=devrandom,然后再去运行一切正常

Qt代码调用:

与windows一致,只需要重新修改一下lcrypto和lssl的路径

Qt之arm使用openssl(RSA加密)相关推荐

  1. OpenSSL RSA加密和解密

    rsa加密的密钥格式常见的有两种: 一种是PKCS#1,密钥头为 -----BEGIN RSA PUBLIC KEY----- 一种是PKCS#8,密钥头为 -----BEGIN PUBLIC KEY ...

  2. OpenSSL RSA加密模式

    一.RSA_NO_PADDING模式,顾名思义,无填充: 测试运行时,也遇到几个问题,需要注意(以下举例均以模数1024bit,128字节): 1.加密数不能大于模数 否则,会报错:"dat ...

  3. Android 在 NDK 层使用 OpenSSL 进行 RSA 加密

    前言 需求:需要在NDK层对一个Java层的字符串进行RSA加密,然后对加密的结果进行Base64返回到Java层 方案:选择使用OpenSSL来实现. 编译libssl.a和libcrypto.a静 ...

  4. openssl 非对称加密 RSA 加密解密以及签名验证签名

    1. 简介 openssl  rsa.h 提供了密码学中公钥加密体系的一些接口, 本文主要讨论利用rsa.h接口开发以下功能 公钥私钥的生成 公钥加密,私钥解密 私钥加密,公钥解密 签名:私钥签名 验 ...

  5. OpenSSL 编程 - RSA 加密解密

    http://blog.csdn.net/nadoo/article/details/2156384 这几天做这方面的东西,网上资料很少,贴一个自己试验写的代码,做个记录. 加密: /* gcc -o ...

  6. 使用OpenSSL进行RSA加密和解密(非对称)

    1. RSA加密和解密基础概念 RSA是一种非对称加密. RSA秘钥:私钥和公钥,一对私钥和公钥就像夫妻一样是唯一的,用私钥加密后必须用对应的公钥才能解密,用公钥加密后必须用对应的私钥才能解密. 加密 ...

  7. Linux C/C++ Openssl RSA Encrypt/Decrypt(加密/解密) 简单示例教程

    PEM文件有以下格式 1.PEM私钥文件格式 -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- 生成该密钥的Linux命令 : ...

  8. 使用OpenSSL加密,使用Java解密,使​​用OpenSSL RSA公钥

    抽象 在2017年,我撰写了一个由三部分组成的系列文章,内容涉及选择最佳的哈希和加密算法. 在对该系列进行研究时,我学到了很多有关哈希和加密的知识. 我学到的最重要的事情是,尽管我必须对如何使用最安全 ...

  9. php java openssl ras_php基于openssl的rsa加密解密示例

    本文实例讲述了php基于openssl的rsa加密解密.分享给大家供大家参考,具体如下: $config = array( //"config" =>"D:/php ...

最新文章

  1. 盘点程序员写过的惊天 Bug
  2. java编写代码时易出错_归纳:编写Java程序最容易犯的21种错误
  3. 跨时钟域处理——脉冲同步器
  4. Oracle添加定时任务
  5. [转:有种感觉叫佩服]一个程序员的奋斗历程
  6. 《剑指Offer》 滑动窗口的最大值
  7. ADODB.Stream
  8. 计算机文化基础习题及答案
  9. win10的pagefile.sys是什么文件?pagefile.sys文件太大如何移动到D盘中?
  10. 论文参考文献批量改为上角标,简单好用!!!
  11. 标准化建站开拓者王征,教你搭建一个有用的品牌官网
  12. pycharm引用pyd文件
  13. 如何提升数据分析的高级感:反客为主、展示神迹、引经据典、繁花似锦
  14. 计算机音乐谱恋人心,天刀曲谱大全_天涯明月刀曲谱恋人心
  15. GEP基因表达式编程
  16. 如何将iPhone微信资料显示地区修改为“中国”
  17. 佩尔(Pell)方程最小正整数解
  18. 【深度学习】数据扩充 (Data Augmentation)
  19. 2.5野兔和山猫的种群动态变化
  20. hashcat破解wifi密码(kali)

热门文章

  1. 【2017年第2期】深度学习在化学信息学中的应用(上)
  2. 【Python】快速学会简单使用Python
  3. 来看看机智的腾讯前端童鞋怎么防盗
  4. MARVELL电力线载波通讯芯片运用于家庭联网
  5. 【知乎强大书单】在数据分析、挖掘方面,有哪些好书值得推荐?
  6. 计算机出现故障的种种现象,七种电脑蓝屏的原因及其解决办法
  7. 《高等工程数学》 吴孟达版, 第二章课后习题解答
  8. 在python中将多张图片合成为视频
  9. python智慧树章节测试答案_知到智慧树_Python程序设计基础_答案章节单元测试答案...
  10. BeeHive、CTMediator、MGJRouter