1、最近在学习加密相关的东西,在这里将自己用到的密钥生成算法和加密算法记录下来

2、密钥生成算法:ed25519,github地址:https://github.com/orlp/ed25519

使用ed25519公钥签名系统生成签名,密钥,向量iv

3、加密算法:这里使用openssl AES-CBC进行数据的加密

4、流程

5、数据加密和解密

在数据加密和解密的时候遇到一个问题,就是AES-CBC算法加解密的数据长度必须是key的整数倍,在上面我们生成的key大小是16字节,当然也可以生成64字节的key。如果数据长度不满16的整数倍,有两个方法可以解决,第一个方法就是多余的数据不加密,第二个方法就是多余的数据先进行base64编码,并且将长度补充到32个字节,补充等号(=),然后在对数据进行加密,解密的时候将数据包的最后32个字节多余的等号去掉。当然,第一种方法比较简单。

6、为什么将多余的数据进行base64编码后还要将数据长度补充位32个字节

因为base64编码是将3个字节编码后会成为4个字节,那么多余的数据长度最多是15个字节,base64编码后是20个字节,最少1个字节,base64编码后是4个字节,总之不会超过32个字节,我们将其补充位32个字节后,就默认最后32个字节肯定是base64编码的,不然不知道是最后16个字节还是最后32个字节是base64编码的

7、github仓库:https://github.com/workhard4323/encrypt_test

C++密钥生成和数据加密相关推荐

  1. java jce-KeyGenerator(密钥生成)

    java jce-KeyGenerator(密钥生成) 在开发时,总要涉及到数据的加密与解密,之前一直有些糊涂,最近看了 jce.jar的源码,来整理记录一下 接着上篇 java jce-Cipher ...

  2. Eos离线密钥生成的PHP代码

    虽然EOS的密钥算法类似于比特币,但做了一些调整,定义了自己的格式.开发包EosTool包含了EOS离线密钥生成模块,可以不连接任何节点实现离线生成EOS密钥.本文将给出EOS离线密钥生成的PHP代码 ...

  3. 更加安全的密钥生成方法Diffie-Hellman

    更加安全的密钥生成方法Diffie-Hellman 之前我们谈到了密钥配送的问题,这个世界是如此的危险, 一不小心通信线路就会被监听,那么我们怎么在这种不安全的线路中传递密钥呢? 这里我们介绍一下Di ...

  4. ubuntu生成密钥和证书_基于浏览器的密钥生成以及与浏览器的密钥/证书存储的交互...

    ubuntu生成密钥和证书 想象以下情况: 您需要从访问您的网站的用户那里获取一个密钥(在非对称情况下为用户的公共密钥 ),并希望浏览器记住私有部分,而不会因冗长的导入过程而困扰用户. 老实说,实际上 ...

  5. aes子密钥生成c语言_一种基于流密码算法的子密钥生成方法与流程

    本发明涉及一种用于分组加解密算法的子密钥的生成方法. 背景技术: 随着信息技术的发展,信息安全性的问题却愈来愈显得突出,保证信息安全的一个重要技术就是密码学.密码学在信息安全技术中扮演着基础的角色,是 ...

  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第16篇]描述DSA、Schnorr和RSA-FDH的密钥生成、签名和验证算法。

    这是一系列博客文章中最新的一篇,文章的主题是"做密码学每个博士生都应该知道的52件事".这一系列问题是为了让博士生们在第一年结束时了解他们应该知道的事情.本周我们将介绍DSA.Sc ...

  7. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第15篇]RSA-OAEP和ECIES的密钥生成,加密和解密

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇总是为了让博士生们在第一年结束时知道些什么.通过描述RSA-OAEP和ECI ...

  8. 密码学专题 密钥生成|分组加密的模式 ECB|CBC|CFB|OFB

    密钥生成 如何安全地生成密钥.即如何生成可信任的密钥,保证用户得到的密钥是安全的, 生成密钥的机器或程序是可信的. 如何生成安全的密钥.安全的密钥没有统一准确的定义,但一般来说是指密钥抗 猜测和抗穷举 ...

  9. 关于注册校验和密钥生成软件问题

    项目背景: 1.项目需要一个注册校验,和密钥生成软件: 采取方案: 1.首先系统获取本地mac值,用md5算法,生成一个密钥. (网上有获取,mac值,以及生成算法,集成到项目里,调接口就行. 注意的 ...

  10. 谷歌地球下载 Outline密钥生成 问题备忘录

    谷歌地球下载及使用总是指引 文章在而d58blog第30篇 Outline下载.Outline密钥生成,Outline使用相关问题指引 Outline下载,Outline密钥购买 生成及使用 ⚡️

最新文章

  1. python自学第12天 模块
  2. 腾讯招.NET5,居然要求精通MySQL,而不是SQLServer!
  3. 2045 数学:排列组合
  4. js 如何在浏览器中获取当前位置的经纬度
  5. HTML+JS实现页面跳转
  6. 【网络技术题库整理4】IP地址规划技术
  7. 大数据组件监控体系构建
  8. 【渗透测试笔记】之【Cobalt Strike小技巧——后台挂起CS服务端】
  9. 小象学院-人工智能机器学习
  10. 策略模式Java实现
  11. 原生javascript实现拖拽改变table表格行高(html)
  12. Linux 压缩、解压、打包操作
  13. Java 仿 Excel 公式计算
  14. 微信小程npm相关问题
  15. 【我遇到了更好的你】
  16. 使用matlab处理INCF采集数据,mdf(.dat)格式文件,并将将其写入excel文件
  17. c语言中while与do while循环的主要区别是什么
  18. 搜狗2016 C++笔试题
  19. 视频直播平台源码关于Facebook登录、分享接入流程
  20. vue移动端项目日历组件,月周切换,点击进入上/下一个月

热门文章

  1. C语言实现strcmp函数
  2. linux数据库可视化工具_适用于Linux的数据可视化工具
  3. media-微软Azure文字转语音
  4. 如何理解希尔伯特空间?
  5. 一个在线挑选编程字体的网站
  6. Sublime Text, MikTeX (或TeXLive), SumatraPDF 配置LaTeX开发环境
  7. 离散数学第六版第er章偶数题答案_离散数学 第2章习题答案
  8. matlab 象限图,【数据可视化】Tableau教程(十)象限图
  9. 《金字塔原理》之表达的逻辑
  10. [机器学习导论]——第一课 机器学习概述