将RSA加密应用在ARM-Linux平台
将RSA加密应用在ARM-Linux平台
- 前言
- 主要任务
- 难点
- *加密解密*
- *密文的传输*
- *跨平台*
- 总结
前言
具体任务细节就不透露了,毕竟没有得到许可。但是总体流程和遇到的主要难点还是值得且可以记录一下的。
主要任务
需要在一个ARM-Linux平台上实现对密文的解密,从而进行某种验证,并且这个密文是从服务器发送过来的.
- 信息收发 :linux和windows下的socket网络编程;
- 加密解密 :调用Openssl库而已;
- 跨平台 :交叉编译而已;
难点
由于详细业务逻辑不方便阐述,我就直接快进到过程中遇到的问题了!
加密解密
其实主要就是一个调用的函数要和公钥私钥的文件格式匹配,否则无法正确读取。而且使用命令行生成的钥匙似乎无法使用函数读取,详细的可以参见这篇博客。
link
密文的传输
由于RSA加密后的密文是会出现0x00
的,而char数组转string如果直接赋值
std::string(char* Encrypted_msg)
所得string会被0x00
截断。由于在操作字符串时图方便采用了string,我就不出意外的遇到了这个问题。我的解决办法十分粗暴:把char数组中元素一个一个放入string中= =
跨平台
- 正确选择交叉编译工具链并安装
- 下载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平台相关推荐
- 嵌入式基于Linux电机控制,基于嵌入式arm+linux平台的直流电机调速控制系统.pdf
2012--2013 学年第 二 学期 物电 学院期末考试卷 嵌入式系统与应用 学号 : 姓名 : 班级 : 成绩: 评语: 装 订 (考试题目及要求) 嵌入式大作: 采用实验箱上的电位器作为信号输入 ...
- arm Linux 低成本方案,参赛作品《低成本基于ARM+Linux平台搭建web服务器的物联网学习板》...
[报名阶段需要填写的内容] 1. 参赛者姓名(必填项): 王徕泽 2. 单位或学校名称(选填项): 徕泽电子工作室 3. 当前职务或职称(选填项): 室长 4. 参赛作品的名字(必填项): 低成本基于 ...
- linux java web.pdf,Java Web应用在ARM Linux平台上的实现.pdf
Java Web应用在ARM Linux平台上的实现.pdf lSSN1009-3044 and KnowledgeTechnology电■知识与技术 Computer l-5690963 V01.5 ...
- linux移植wifi板载驱,基于arm\Linux平台USB无线网卡的wifi驱动移植
arm平台是三星2440,Linux内核是2.6.24,威盛VNT6656的USB无线网卡:开发平台是Fedora10,内核是2.6.27.遭遇的问题主要有如下几个: 一.驱动程序的版本不对 开始在网 ...
- 移植phonon到arm(续 ARM Linux平台环境搭建-QT SDK编译)
移植交叉编译过的phonon库 qt源码编译后,将对应的QT目标文件夹下lib文件夹中的 以libphonon开头的几个文件打包压缩,复制到arm板对应的QT文件夹中lib目录下 测试qt程序,让qt ...
- java aes加密 linux和windows,AES加密在windows與linux平台下顯示結果不同,解決方案
現象描述: 在 windows 操作系統下加解密正常,但部署到 linux 環境中相同的輸入加密結果不正確,並且每次運行返回的結果都不同.也就是說在windows下加解密都正常,一但部署到linux下 ...
- Arm Linux平台串口通信,二进制数据流
项目需要通过串口传输音频数据,由于音频数据包含不可显示的字节,属于二进制数据流,因此需要对linux端的串口读取程序设定一些参数.完整的串口配置代码如下: int fd = open("/d ...
- linux算法设计,嵌入式Linux平台下随机序列算法设计.doc
嵌入式Linux平台下随机序列算法设计 嵌入式Linux平台下随机序列算法设计 [摘 要]本文以多媒体播放器的随机不重复播放机能为切入点,针对嵌入式平台实时性要求高,处理速度不够快,但系统存储歌曲量大 ...
- linux 加密可逆,RSA加密是可逆的吗
java rsa加密可逆吗可逆.有秘钥就成. linux上RSA加密每次都变化吗 加密解密的技术: 对称加密 加密方和解密方使用是同一个密钥,加密解密的速度都很快,先将数据明文 分成数据块儿,一般来讲 ...
最新文章
- 【项目实践】从零开始学习Deep SORT+YOLO V3进行多目标跟踪(附注释项目代码)...
- python 比较矩阵对应位置元素大小,比较矩阵的两个元素并在不同位置填充相对值...
- linux下 x86、i386、i486、i586、i686、x86_64区别
- 47.2. 配置 Tomcat 服务器
- Cpp 对象模型探索 / 含有虚基类的类的内存布局
- 极简教程: 使用 matplotlib 绘制 GIF 动图
- 囚徒困境(博弈论的诡计)
- sentry-前端应用监控工具
- Quartus-Modelsim仿真方法
- 微博批量发布,微博定时发布,批量删除,批量评论等功能的实现
- 网站流量分析数据指标
- 中高级iOS大厂面试宝典,拿到offer率80%,金三银四将是你的新起点
- api文档 luci_openwrt中luci学习笔记
- java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false is
- 12306个人敏感信息泄露
- xmanager linux 远程桌面,Xmanager连接CentOS的远程桌面
- Java技术学习网,是我们日常学习不可欠缺的
- beyond compare 2 中文乱码问题
- 动物细胞无血清培养基的发展和应用
- 国内CDN现状与美国对比
热门文章
- 人身三流指什么_什么是三流明星
- python数据分析学习day08:柱状图
- python 读取数据出现UnicodeDecodeError:: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid contin
- LED 流水灯与闪烁
- 知数堂全网通缉这个人
- Arcgispro2.5安装教程
- 联想电池召回网上登记 Troubleshooting
- Android 保持ImageVIew大小不变,让图片按比例拉伸
- html复习第七天 京东首页布局完成
- java图形化界面操作和命令行操作,常用的命令行指令