将RSA加密应用在ARM-Linux平台

  • 前言
    • 主要任务
    • 难点
      • *加密解密*
      • *密文的传输*
      • *跨平台*
    • 总结

前言

具体任务细节就不透露了,毕竟没有得到许可。但是总体流程和遇到的主要难点还是值得且可以记录一下的。

主要任务

需要在一个ARM-Linux平台上实现对密文的解密,从而进行某种验证,并且这个密文是从服务器发送过来的.

  1. 信息收发 :linux和windows下的socket网络编程;
  2. 加密解密 :调用Openssl库而已;
  3. 跨平台 :交叉编译而已;

难点

由于详细业务逻辑不方便阐述,我就直接快进到过程中遇到的问题了!

加密解密

其实主要就是一个调用的函数要和公钥私钥的文件格式匹配,否则无法正确读取。而且使用命令行生成的钥匙似乎无法使用函数读取,详细的可以参见这篇博客。
link

密文的传输

由于RSA加密后的密文是会出现0x00的,而char数组转string如果直接赋值

std::string(char* Encrypted_msg)

所得string会被0x00截断。由于在操作字符串时图方便采用了string,我就不出意外的遇到了这个问题。我的解决办法十分粗暴:把char数组中元素一个一个放入string中= =

跨平台

  1. 正确选择交叉编译工具链并安装
  2. 下载openssl源码并编译,这里有一个也许会遇到的大坑:
    解密的时候报错,bignum routines:BN_mod_inverse: no inverse我的解决办法是:指定目标平台的芯片架构。 在编译之前会使用 config 文件配置输出目录等,在这个文件里是有指定平台这一选项的,如下图。事实上看第三行也能知道当你执行./config之后会输出操作系统,一般情况你不指定就是linux-x86 64了(当然也可能是根据当前使用的系统)。

    下图是如何填写的一些示例,具体的在config文件里都有写,我看了下还有iphone、Android各种平台的参数。我这里填的参数就是符合:
    ‘armv[7-9]*-*-linux2’ 这一格式的,因此我输出的就是 Operating system: linux-armv4
    修改了这里之后,在Makefile中指定好交叉编译的工具就行了,我这里是不需要再删除-m64的,因为根本没有。(如果不指定芯片架构就得删除两处-m64)。再然后就是make,make install,有很多相关的教程,且都大同小异。(查openssl交叉编译就能找到很多)

总结

不难的任务,但还是踩了几个坑,好在网上都有前辈们提过几乎一模一样的问题,我要做的仅仅是一个一个尝试罢了,再次感慨:互联网虽然充斥着大量重复的垃圾信息, 但是好好检索还是能发现很多有帮助的内容的。这个小项目实现过程中绝大多数问题都依赖互联网解决了,因此我记录一下我解决的问题希望有一天能帮到别人吧hh

将RSA加密应用在ARM-Linux平台相关推荐

  1. 嵌入式基于Linux电机控制,基于嵌入式arm+linux平台的直流电机调速控制系统.pdf

    2012--2013 学年第 二 学期 物电 学院期末考试卷 嵌入式系统与应用 学号 : 姓名 : 班级 : 成绩: 评语: 装 订 (考试题目及要求) 嵌入式大作: 采用实验箱上的电位器作为信号输入 ...

  2. arm Linux 低成本方案,参赛作品《低成本基于ARM+Linux平台搭建web服务器的物联网学习板》...

    [报名阶段需要填写的内容] 1. 参赛者姓名(必填项): 王徕泽 2. 单位或学校名称(选填项): 徕泽电子工作室 3. 当前职务或职称(选填项): 室长 4. 参赛作品的名字(必填项): 低成本基于 ...

  3. linux java web.pdf,Java Web应用在ARM Linux平台上的实现.pdf

    Java Web应用在ARM Linux平台上的实现.pdf lSSN1009-3044 and KnowledgeTechnology电■知识与技术 Computer l-5690963 V01.5 ...

  4. linux移植wifi板载驱,基于arm\Linux平台USB无线网卡的wifi驱动移植

    arm平台是三星2440,Linux内核是2.6.24,威盛VNT6656的USB无线网卡:开发平台是Fedora10,内核是2.6.27.遭遇的问题主要有如下几个: 一.驱动程序的版本不对 开始在网 ...

  5. 移植phonon到arm(续 ARM Linux平台环境搭建-QT SDK编译)

    移植交叉编译过的phonon库 qt源码编译后,将对应的QT目标文件夹下lib文件夹中的 以libphonon开头的几个文件打包压缩,复制到arm板对应的QT文件夹中lib目录下 测试qt程序,让qt ...

  6. java aes加密 linux和windows,AES加密在windows與linux平台下顯示結果不同,解決方案

    現象描述: 在 windows 操作系統下加解密正常,但部署到 linux 環境中相同的輸入加密結果不正確,並且每次運行返回的結果都不同.也就是說在windows下加解密都正常,一但部署到linux下 ...

  7. Arm Linux平台串口通信,二进制数据流

    项目需要通过串口传输音频数据,由于音频数据包含不可显示的字节,属于二进制数据流,因此需要对linux端的串口读取程序设定一些参数.完整的串口配置代码如下: int fd = open("/d ...

  8. linux算法设计,嵌入式Linux平台下随机序列算法设计.doc

    嵌入式Linux平台下随机序列算法设计 嵌入式Linux平台下随机序列算法设计 [摘 要]本文以多媒体播放器的随机不重复播放机能为切入点,针对嵌入式平台实时性要求高,处理速度不够快,但系统存储歌曲量大 ...

  9. linux 加密可逆,RSA加密是可逆的吗

    java rsa加密可逆吗可逆.有秘钥就成. linux上RSA加密每次都变化吗 加密解密的技术: 对称加密 加密方和解密方使用是同一个密钥,加密解密的速度都很快,先将数据明文 分成数据块儿,一般来讲 ...

最新文章

  1. 【项目实践】从零开始学习Deep SORT+YOLO V3进行多目标跟踪(附注释项目代码)...
  2. python 比较矩阵对应位置元素大小,比较矩阵的两个元素并在不同位置填充相对值...
  3. linux下 x86、i386、i486、i586、i686、x86_64区别
  4. 47.2. 配置 Tomcat 服务器
  5. Cpp 对象模型探索 / 含有虚基类的类的内存布局
  6. 极简教程: 使用 matplotlib 绘制 GIF 动图
  7. 囚徒困境(博弈论的诡计)
  8. sentry-前端应用监控工具
  9. Quartus-Modelsim仿真方法
  10. 微博批量发布,微博定时发布,批量删除,批量评论等功能的实现
  11. 网站流量分析数据指标
  12. 中高级iOS大厂面试宝典,拿到offer率80%,金三银四将是你的新起点
  13. api文档 luci_openwrt中luci学习笔记
  14. java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false is
  15. 12306个人敏感信息泄露
  16. xmanager linux 远程桌面,Xmanager连接CentOS的远程桌面
  17. Java技术学习网,是我们日常学习不可欠缺的
  18. beyond compare 2 中文乱码问题
  19. 动物细胞无血清培养基的发展和应用
  20. 国内CDN现状与美国对比

热门文章

  1. 人身三流指什么_什么是三流明星
  2. python数据分析学习day08:柱状图
  3. python 读取数据出现UnicodeDecodeError:: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid contin
  4. LED 流水灯与闪烁
  5. 知数堂全网通缉这个人
  6. Arcgispro2.5安装教程
  7. 联想电池召回网上登记 Troubleshooting
  8. Android 保持ImageVIew大小不变,让图片按比例拉伸
  9. html复习第七天 京东首页布局完成
  10. java图形化界面操作和命令行操作,常用的命令行指令