标题: 用C语言异或进行加密与解密运算 [打印本页]

作者: f556    时间: 2019-12-31 17:18
标题: 用C语言异或进行加密与解密运算
前久写《不用中间数交换两个变量的方法》反响不错,其中用到了异或运算。今天看《通信原理》书,提了数字信息可以很方便地进行加密与解密运算,用到了异或。
随手写了个实例玩玩:
unsigned int aa=3456;
void main( void )
{
      unsigned int pwd=5438;
      aa ^= pwd;  //加密

      aa ^= pwd; //解密
}
没有用函数、指针传递参数形式来写,更显的简单,就两行语句。

定理:一个数与另一个数做两次异或运算后得到原值,或者说恢复到原来的值。
运行过程如图,感谢IAR的方便。

1.jpg (23.66 KB, 下载次数: 274)

加密运算前

加密运算前

2.jpg (23.95 KB, 下载次数: 252)

已加密

已加密

3.jpg (19.31 KB, 下载次数: 249)

解密运算后,得到原值

解密运算后,得到原值

作者: lwx313    时间: 2020-1-3 09:30
嗯嗯,学习了
作者: zxlong123456    时间: 2020-1-7 19:49
学习了,谢谢
作者: lindeijun1    时间: 2020-1-11 08:34
谢谢楼主分享!!!
作者: hfj2011    时间: 2020-1-11 12:02
很有收获,谢谢分享
作者: chabao    时间: 2020-1-11 12:25
这个厉害
作者: sfdbhgfhdf    时间: 2020-1-13 14:21

很有收获,谢谢分享
作者: sunx    时间: 2020-1-20 13:38
谢谢分享
作者: azxiaxp    时间: 2020-1-31 11:59
好厉害,简单可行!!
作者: xiaoniren    时间: 2020-2-3 12:20
学习了有用
作者: wsh791    时间: 2020-2-3 16:56
学习一下,谢谢分享
作者: 恋上天山    时间: 2020-2-7 14:51
学习一下,谢谢分享
作者: xiaobing318    时间: 2020-2-13 15:25

学习一下,谢谢分享!!
作者: 1238    时间: 2020-2-14 09:31
学习了,谢谢分享
作者: demoncr    时间: 2020-2-14 19:54
学习了,谢谢分享
作者: diguapi    时间: 2020-2-16 23:02
学习一下,谢谢分享
作者: waas1987    时间: 2020-2-17 14:03
学习了,,多谢,,,
作者: 000000123456    时间: 2020-2-18 19:06
学习一下
作者: shenshaohai    时间: 2020-2-18 21:40
这样子搞 有什么作用吗
作者: yxh1999    时间: 2020-2-25 11:54
学习了,谢谢!
作者: yxh1999    时间: 2020-2-25 12:08
这样子搞 有什么作用吗???
作者: r121    时间: 2020-2-29 08:34
谢谢分享
作者: striverss    时间: 2020-3-2 08:14
嗯嗯,我们做家电联网的也使用类似的加密。
作者: barlai    时间: 2020-3-11 07:37
学习了!
作者: zhao学海无涯    时间: 2020-3-11 14:28
好专业,厉害,见识了。
作者: jhy8341    时间: 2020-3-15 21:06
可以用在串口通信数据加密
作者: 1过热或    时间: 2020-3-25 00:11
32的话可以直接用crc
作者: 新洲罗远    时间: 2020-4-22 20:27
这个算法在通讯中常用,因为异或是最简单方便的改变数据形式的方式。
作者: tieq1952    时间: 2020-4-23 06:30
谢谢分享!!!
作者: univers    时间: 2020-4-25 15:10
学习了,谢谢。
作者: 1632169924    时间: 2020-5-15 10:28
学习了,谢谢
作者: SSH0911    时间: 2020-5-17 11:08
感谢分享,学到了谢谢
作者: romking11    时间: 2020-5-25 15:51
技术就是知道了就简单,不知道就是黑匣子。
作者: ycdish    时间: 2020-5-29 23:43
学习了谢谢
作者: 编程小小白    时间: 2020-6-4 10:11
谢谢了 学习稻了
作者: zaina    时间: 2020-6-5 15:10
大赞 钻研哦
作者: 着急的迷糊    时间: 2020-6-8 14:32
太神奇了
作者: 清茗酱w    时间: 2020-6-8 17:49
感谢分享
作者: lijunxing    时间: 2020-7-19 12:09
这个正是我想要的  感谢分享
作者: th_5088    时间: 2020-7-27 21:59
学习了,非常感谢!
作者: 84876002    时间: 2020-8-30 08:32
还能这样,学习了。
作者: William_Han    时间: 2020-9-20 10:29
条例清晰,整理全面,好资料,谢谢分享!!!
作者: tyxshit    时间: 2020-11-11 15:05
学习了,希望有更多的分享
作者: caobinbin@@    时间: 2020-11-16 09:09
这个好简单
作者: 15605230262    时间: 2021-1-22 19:25
被我学到了
作者: rundstedt    时间: 2021-1-23 18:02
加密强度太低了,建议楼主搜下TEA、XTEA、XXTEA、Poly1305,ChaCha20之类的加密算法,虽然也是基于异或,但是加密强度不知道比你高到哪里去了。
作者: CQQ@123    时间: 2021-1-27 08:18
感谢楼主分享,受教了!
作者: chenxianyu    时间: 2021-3-6 13:01
学习了。不错的创意

作者: fyw2238881376    时间: 2021-4-25 19:18
高级!!
作者: Dd_d    时间: 2021-6-7 23:45
有帮助,谢谢楼主去学习了
作者: zyluglugl    时间: 2021-8-5 18:56
楼主分享这个思路太好了,开销少!
作者: mahdi    时间: 2022-4-19 15:40
这个真是简单好用
作者: 624353765    时间: 2022-5-30 07:35
还有加,减,位取反都可以实现,组合使用能达到更复杂的加密效果
作者: 鹈鹕    时间: 2022-6-11 21:41
哈哈,同好,,,,我也写了一个完全实用的程序,起初是在DOS下用汇编语言写的.com程序,对任意文件加密,算法就是这个,这个就是经典加密算法中的“维多利亚”算法在电脑上的实现。说来话长了,十五六年前我把北航的CAXA程序的加密盘给破解了,完全手工花了我两个月时间,那个时候干劲真足。。。。。破解的过程中我学到了这个方法。一开始就在DOS的DEBUG下直接编写汇编,写好后使用不太方便,后来又用MASA6正式的从写了一遍,五六年前又用VB写成了Windows程序。
作者: Qlthlth    时间: 2022-7-16 07:56
有收获
作者: 大漠落日    时间: 2022-7-29 07:46
这样加密太快了,
作者: 8800    时间: 2022-10-28 16:34
还有这种用法,学习了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1