完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本来打算使用RVB2601实现一个形如RSA等的高级加密算法,但由于缺少大数库等原因无法完成,遂降级成最初级的凯撒加密,完成一个基本的密码交互框架。值得注意的是,aos自带加密库,也没有重新制造一个轮子的必要。 根据上一篇博文所示,目前关于输入键盘数据,我只实现到aos吞一个字符,输入到用户程序一个字符的程度,但是完全不影响实际的运行效果。 凯撒密码是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。下图所示为一个简单的凯撒加密的一个交互流程。 键盘输入顺序为:enter->a->enter->l->enter->i……,每个enter都被aos吞掉,以此类推。明文为ali,位移5位成为JUR,再位移5位回来还原明文ali。 该方案基于helloworld例程修改而来,该例程提供了所需的stdlib库等,核心代码如下所示,就是非常简单的交互逻辑: int main(void) { board_yoc_init(); LOGD(TAG, "%sn", aos_get_app_version()); oled_init(); char str[3],numc; int num; for(int i=0;i<3;i++) { printf("n输入字符%d:", i+1); cli_getchar(&str); } printf("n输入加密位移位数:"); cli_getchar(&numc); num=numc-48; for(int i=0;i<3;i++) { str-=num; printf("n密文%d : %c", i+1,str); } printf("n输入解密位移位数:"); cli_getchar(&numc); num=numc-48; for(int i=0;i<3;i++) { str+=num; printf("n明文%d : %c", i+1,str); } return 0; } 如果要实现更复杂的算法,我推测应该使用了专门的长数据类型,实现起来并不会很复杂,而且CH2601带了密码专用的指令集,也使该过程变得十分轻松高效。/由于RVB2601是32位处理器,与int的长度一样,最终在RV32上运行的指令会以高精度运算的形式实现。 另外CDK的流畅度还是需要吐槽一下,群里很多朋友都反映了卡顿的问题,而且与主题模式没有关系,即使用classic也会卡顿。其实直接使用vscode修改代码,在cdk上编译或者直接调用riscv工具编译都是可以考虑的选项。 文章转载自:平头哥芯片开放社区 作者:陈振哲 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15654 浏览 1 评论
13701 浏览 4 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】四、烧写waft系统&搭建waft测试环境
19618 浏览 2 评论
59020 浏览 19 评论
【限时福利】加入芯片开发社区,领100G电子工程师资料大礼包
87672 浏览 121 评论
邀请函 | 3月2日 来上海参加平头哥“玄铁RISC-V生态大会”
740浏览 0评论
读书分享会 | 玄铁RISC-V处理器入门与实战电子书免费下载!
627浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 18:39 , Processed in 0.572259 second(s), Total 62, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号