单片机加密初级
来源:互联网 发布:java md5工具类运用 编辑:程序博客网 时间:2024/06/05 19:56
第一环:
ID-->F1(ID) -----》IDX,
将ID通过自定义的一个算法F1,转换为一个整数IDX , F1为不可逆运算,也不能被轻易分析,这个实际上是容易实现的。
然后,将IDX保存到EEPROM或FLASH的任何地方,我们通过编一个函数 GET_IDX()能够读出这个数即可。
第二环:
再编一个函数:
int getmy_1(){
return F1(ID)-GET_IDX()+1;
}
int getmy_0(){
return F1(ID)-GET_IDX();
}
还有一些其他自定义的函数内:都可以直接使用(F1(ID)-GET_IDX()) 来替代0; 直接用(F1(ID)-GET_IDX()+1)来替代1;
第三环:
在程序中对效率不太高的情况下需要使用到1的地方,都可以考虑使用getmy_1()代替。
或即使本不使用1,也可以来用上一下:
如: x=(x+1-getmy_1())*getmy_1();
或把 for(i=0;i<=count-1;i++)
改为: for(i=getmy_0();i<=count-getmy_1();i++)
抑或是:
指针 p++;可以改为: p=p+getmy_1();
或者:给函数传递变量时,传递方在 变量上+F1(ID), 被调用的函数在 变量上--GET_IDX():
比如本来是
void f1(){
int i,j;
....
j=f2(i);
}
int f2(i){
return i*2;
}
修改为:
void f1(){
int i;
....
j=f2(i+F1(ID));
}
int f2(i){
return (i-GET_IDX())*2;
}
如程序被非法复制:从ID无法得到IDX,那么IDX和F1(ID)不相等,
那么getmy_0不再是0,getmy_1不再是1,
程序将出现什么结果,谁都无法预料了。
---------------------------------------------------------
特点: 由于整个程序的加密,采用了“运算加密”的思路, 而非判断加密, 又没有用到任何一行 if判断,让解密者去想破脑袋吧。
看了这篇文章,我也对加密有了形式上的了解,让没有一点思路的人有点思路,菜鸟片,大神可以提供更多的方案供大家交流学习。
0 0
- 单片机加密初级
- 华为OJ 初级:字符串加密
- PIC单片机该怎么加密
- 单片机Base64 C语言加密
- 网站密码加密原理(初级)
- 华为初级——字符串加密
- (Java初级)简单的四位数加密
- 单片机加密思路,相当不错的帖子
- STM32单片机学习(8) 程序加密
- 单片机上使用TEA加密通信
- 51单片机初级之KeilC51新建工程[1]
- 一国外软件的加密防护研究(初级水准)
- 基于msp430的单片机的DES加密程序
- 初级
- 单片机
- 单片机
- 单片机
- 单片机
- LightOJ 1097 - Lucky Number [线段树二分前缀和构造数列]
- C#使用图片制作不规则窗体
- HTTP状态码详解
- 剑指Offer:面试题31 连续子数组的最大和
- <图形图像,动画,多媒体> 读书笔记 --- Quartz 2D 图形的基本变换
- 单片机加密初级
- viterbi算法
- PL/SQL如何查看过程的声明和定义
- jsp学习之路之Myeclipse部署tomcat服务器并实现Hello World一个小网页
- Android中SQLite访问
- c++中的函数嵌套调用和嵌套定义问题
- 装修甲醛如何去除 去除甲醛最好的方法
- linux 下设置用户ID 和 设置组ID 学习笔记
- 安卓中动态生成界面布局