一种简单的,适合单片机的,数据加密解密方法,仅需要调用两个函数即可完成数据的加密解密

本人原创,源码可移步:https://gitee.com/demyli/easy-encrypt.git

/******************************************文件说明:  一种简单的加密解密算法作    者:  DemyLi修改日期:  2022-5-5加密解密思想:适配MCU算力,简化计算,不做复杂加密及解密算法加密要素:当前加密对象A、其序列偏移P、密码本S
解密要素:当前已加密值B、其序列偏移P、密码本S对数据A加密公式及说明:S[P] ^ [A+P] = B第1步: A值,加上,偏移量P,的和第2步:这个和,异或,密码本S在偏移P的值对数据B解密公式及说明:B ^ S[p] - P = A加密逆运算注意:1.加密公式及密码本不在协议中公开2.偏移P仅设16位,取值[0-F],超长后实际偏移取余0x0F
******************************************//*************头 文 件********************/
#include <stdio.h>
#include <stdint.h>

/宏 定 义*******/

/参数定义*******/

//密码本,可自行设定替换长度为15的密码字符

const char* CodeBook = "tY[ztM]CodEBoOk";

加密函数

/*******************************************************
函数功能:加密函数
输入参数:待加密数据,待加密数据长度
输出参数:直接替换待加密数据
函数说明:无
*******************************************************/
void codebook_encrypt(uint8_t *data, uint32_t len)
{uint8_t encryptDara;uint32_t posIndex = 0;uint32_t posIndexF = 0;//循环加密  S[P] ^ [A+P] = Bfor (posIndex = 0; posIndex < len; posIndex++){posIndexF = posIndex % 0x0F;encryptDara = data[posIndex] + posIndex;data[posIndex] = CodeBook[posIndexF] ^ encryptDara;}
}

解密函数

/*******************************************************
函数功能:解密函数
输入参数:待解密数据,待解密数据长度
输出参数:直接替换原始数据
函数说明:无
*******************************************************/
void codebook_decrypt(uint8_t *data, uint32_t len)
{uint8_t encryptDara;uint32_t posIndex = 0;uint32_t posIndexF = 0;//循环解密  B ^ S[p] - P = Afor (posIndex = 0; posIndex < len; posIndex++){posIndexF = posIndex % 0x0F;encryptDara = CodeBook[posIndexF] ^ data[posIndex];data[posIndex] = encryptDara - posIndex;}
}

使用说明

共两个函数,其中codebook_encrypt为加密函数,codebook_decrypt为解密函数。

uint8_t testdata[22] = {1,2,3,4,5,6,7,8,9,0,0xA,0xB,0xC,0xD,0xE,0xF,0,0xb,0xc,0xd,0xe,0xf};/*******************************************************
函数功能:测试代码
输入参数:
输出参数:
函数说明:
*******************************************************/
void codebook_test(void)
{codebook_encrypt(testdata,22);codebook_decrypt(testdata,22);
}int main ()
{codebook_test();return 0;
}

一种简单的,适合单片机的,数据加密解密方法,仅需要调用两个函数即可完成数据的加密解密相关推荐

  1. ICCV2021 Oral SimROD:简单高效的数据增强!华为提出了一种简单的鲁棒目标检测自适应方法...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨小马 来源丨我爱计算机视觉 ▊ 写在前面 本文提出了一种简单有效的鲁棒目标检测无监督自适应方法( ...

  2. 『论文阅读』SIF:一种简单却难以打败的句子嵌入方法

      文献:A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE EMBEDDINGS   在进行了词嵌入的研究后,我们往往会联想到这样一个问题:既然单词可以 ...

  3. 存量房贷利率,一种简单估算其自然年利率调整的方法。

    回溯 需要先看看上篇:python实现货币贷款分期计算(等额本金/等额本息) 1.摘要 2022年过去了,总所周知LPR被多次下调,目前有存量房贷的朋友,如果(普遍)设置的是根据自然年LPR动态调整利 ...

  4. 一种简单的关闭win10自动更新的方法

    win10自动更新是必要的,但是很多时候更新太过于频繁,有很多补丁也不是需要立即就安装的.可是win10却会强制更新,这样很影响我们的使用. 以下是我很少看到的在网上被提到的一种关闭方法,不涉及注册表 ...

  5. Java两种简单的获取页面源码的方法

    2019独角兽企业重金招聘Python工程师标准>>> package demo11;import java.io.IOException; import java.net.Malf ...

  6. 【BAT】【网友小需求】多开微信,超简单!(简单粗暴方法仅需就两步!)

    多开微信 最最最简单粗暴的方法 最最简单且稳定方法 最最最简单粗暴的方法 鼠标放在微信图标上,鼠标左击和按键盘Enter键同时按,按几下开几个. 最最简单且稳定方法 新建一个.txt文本文档 填写内容 ...

  7. php上传word并展示_这2种简单方法能将Word批量转换PDF

    目前PDF文档使用越来越多,但由于新建和编辑相对比较复杂,我们经常先用Word文档编辑好之后再转换成PDF格式,如果需要处理的文档较多,是否有快速批量处理的方法呢?下面介绍两种简单一键批量Word转P ...

  8. 一种简单实用的全屏方法

    实现程序全屏幕显示的思路有很多种,最常见的一种就是: 1)利用Windows API提供的一个结构体WINDOWPLACEMENT来存储全屏显示前视图和主框架窗口在屏幕上的位置和显示信息.非客户区窗口 ...

  9. ASP.NET(C#)常用数据加密和解密方法汇总

    ASP.NET(C#)常用数据加密和解密方法汇总  一.            数据加密的概念 1.  基本概念 2.  基本功能 3.  加密形式 二.            数据加密的项目应用和学 ...

最新文章

  1. 2021 年 NLP 重要国际会议时间
  2. IDEA中的项目没有被SVN管理解决办法
  3. ARKit从入门到精通(4)-ARKit全框架API大全
  4. truncate python是删除文件内容吗_在Python中操作文件之truncate()方法的使用教程
  5. ffmpeg处理RTMP流媒体的命令 发送流媒体的命令(UDP,RTP,RTMP)
  6. python中index方法详解_详解python中的index函数用法
  7. MOne︱基于词包的无监督多主题得分 练习题
  8. python怎么设置回文数_Python中的回文数
  9. 天大 ACM 1090. City hall
  10. 封装Cell(-去掉TableView那些碍眼的分割线)
  11. 服务器系列和酷睿系列,三大系列 从英特尔主流处理器选择服务器(2)
  12. 量子化学计算机理,量子化学(理论化学的分支学科)_百度百科
  13. 云计算之k8s系列_第三回
  14. windows下 利用CoreAudio,Libmad,和3D环绕音效原理实现的MP3播放器
  15. HTML5+CSS3练习小实例:发光果冻泡泡动画
  16. 对信息断舍离进行时——一段自我反省
  17. Excel分列-字母与汉字(前后)
  18. 如何看笔记本电脑配置?
  19. matlab dbns实现,深度置信网DBNs的源码
  20. Ubuntu开机一直滚屏 关键词:pcieport.......

热门文章

  1. 第一次面试Java实习生经历
  2. 利用Linux下DDOS工具tfn2k进行DDOS攻击试验
  3. 完成selec函数的TCP客户端
  4. [原创]反调试技巧总结-原理和实现(1)(2)(3)(4)(5)(6)......
  5. 远程线程注入dll的一个例子,netcat.dll
  6. PHP带头大哥学习的三部曲!
  7. 字符跳动动画效果(Html+Css)
  8. HTMLParser解析html详解
  9. html5手机端响应式图片相册幻灯片插件特效
  10. 如何在90天内学会一门语言