[AVR单片机]

加解密入门与相关汇编指令的运用(动态更新-8-8-)

[复制链接]
6462|53
手机看帖
扫描二维码
随时随地手机跟帖
宇宙飞船|  楼主 | 2010-8-7 23:47 | 显示全部楼层 |阅读模式
本帖最后由 宇宙飞船 于 2010-8-9 12:20 编辑

这是加解密必需用到的汇编指令(8条)。
and    与                //  logical and registers
or      或                 //  logical or registers
xor    异或              //  exclusive OR registers
LSL    左移              //  logical shift left
LSR    右移              //  logical shift right
ROL   带进位左环移   //  rotale left  through carry
ROR   带进位右环移   //  rotale right  through  carry
com   取反              //  one's compement

一些技术上的老鸟(本身对术数悟性太差的缘故),一见到飞船用and 和 or 指令来加解密,就笑飞船信口开河!
飞船将引领AVR初学者用汇编一步一步踏进加解密的大门,揭开加密解密的神秘面纱。

------------**最简单的加密------------
最原始最简单的加密就是把字节移位若干次,例如:

字母 A 的代码是 1  
字母 B 的代码是 3  
字母 C 的代码是 5
A左移3位, 得 1*8=8
B左移3位, 得 3*8=24
C左移3位, 得 5*8=40

当我们截获 (A,B) ,(A,C) (B,C) 的任意其中一组数据,
设截获了B与C两字节数据 b=24 ,c=40 得         
                   3*K=24  
                   5*K=40
通过解方程组得系数 K=8   这样就**完毕。
假若左移后再取反如何**?欲知后事如何,
请听下回分解(未完待续!)

***************************

2010-8-8 续:
        3的反码=FC  
        5的反码=FA
        5-3=2 (结果正), FA-FC=-2 (结果负)
根据结果是负得知,数据已取反
以上考虑的是不丢模的理想情况下实现的**。
假若已丢模了,从截获的几个数据点中该如何测定丢模?这是一个非常有趣的等差数列求解问题。MCU的实现上可以采取遍历移位法,其中的关键技术点就是断定符合条件的情况,原理并不复杂,这个问题留待大家思考。

只要把以上的简单步聚搞熟了,就知道了加密的关键点在哪里,解密的难点在哪,正所谓知已知彼百战百胜。

以下直接切入加密的讨论中,这里要用到一些关键的MCU技术,位提取搬移技术,
这里采用的通用的and , or 两条指令
举例子说明一下用法:
把第0位与第1位互换,(0度水平局部转置)
            10101001 ---->    10101010     
把(1)式的0位与(2)式的0位互换(90度垂直转置)
  (1)      10101001             10101000     
  (2)      10100010 ---->    10100011
以上举例说明了这两条指令的用法,是魔方旋转的基础。
该如何制造障眼法?也就是把全00,或FF,或有规律的原始数据变成看似无规律?
           0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF
欲知后事如何,请听下回分解。

相关帖子

宇宙飞船|  楼主 | 2010-8-7 23:55 | 显示全部楼层
因精品库中不能同步更新,请老顽童不要加精,飞船将在主贴中动态更新内容。
这一回势必把加解密大揭爆玩个痛快,飞船以前从来没有想过这会是AVR板块的第一个项目。

使用特权

评论回复
hotpower| | 2010-8-8 00:41 | 显示全部楼层
每次2行太少,否则俺又要加精华了!!!

使用特权

评论回复
宇宙飞船|  楼主 | 2010-8-8 00:43 | 显示全部楼层
李冬发  发表于 2009-7-17 01:59
//加密是只能用异或的,与、或是会破坏明文的!
---------------------------------------------------

飞船评:其人不懂装懂,本不值得飞船点化,只因飞船要为AVR的粉丝们谋幸福,估且不与其计较。

使用特权

评论回复
宇宙飞船|  楼主 | 2010-8-8 00:52 | 显示全部楼层
21IC这么多双眼睛看着!老顽童千万不要公报私仇!飞船作为AVR的版主,理应有此权利置顶讨论。

使用特权

评论回复
hotpower| | 2010-8-8 07:29 | 显示全部楼层
李冬发  发表于 2009-7-17 01:59
//加密是只能用异或的,与、或是会破坏明文的!
---------------------------------------------------

飞船评:其人不懂装懂,本不值得飞船点化,只因飞船要为AVR的粉丝们谋幸福 ...
宇宙飞船 发表于 2010-8-8 00:43


李冬发说的一点没错,密码的根基就是异或!!!地球上无人有异议,除飞船外。

既然他不懂装懂,俺也一样了,那么请飞船高见!!!

飞船第1课要讲解加密和解密,即可逆的问题,必存在还原算法。

请问不用异或用什么???

使用特权

评论回复
hotpower| | 2010-8-8 07:33 | 显示全部楼层
飞船要为AVR的粉丝们谋幸福


理念很好,但飞船在网上做个何等奉献???有什么原创流芳百世???

俺虽是农民,但俺敢说俺死后必有人挂念,飞船敢说吗?不忌讳吗???

使用特权

评论回复
宇宙飞船|  楼主 | 2010-8-8 09:46 | 显示全部楼层
本帖最后由 宇宙飞船 于 2010-8-8 09:47 编辑

老顽童到现在竟然还不知道那两条(and, or)指令在加解密上的运用!真让飞船大跌眼镜!
老顽童加精收藏的本意,无非是想留下飞船贴出的那两条指令用在加解密上的证据,让密界上所谓的‘砖家们’笑话而已。

老顽童可能是用C,DEPHI,JAVA之类的编译工具,用到**有点问题了?真正的高手都知道,最强的加解密算法是用汇编语言写出来的。

汇编语言有其它语言不可取代之的过人之处,就是方便直接支持位(bit)提取!懂吗!这是魔方转动的基础!连这么简单的知识都没有弄清楚,竟在飞船面前放一些蛀米证书出来!老顽童你是真好大的胆子!

使用特权

评论回复
123jj| | 2010-8-8 10:28 | 显示全部楼层
老顽童弄Z80的(and, or)指令时,飞船还在穿开挡裤呢!
真正的高手都知道,老顽童玩了那么多花样,目录如下,飞船除了打口水仗,玩过什么?

hotpower的分类
ARM  (31)
Keil C51  (39)
GCCAVR之C++  (20)
PICC  (12)
DSP  (11)
Delphi语言设计  (6)
尿童学堂  (28)
非典应用怪潭  (11)
HotPower水潭导航  (6)
菜地公告  (40)
非典型LPCARM之攻防体系  (4)
CUPL语言设计  (11)
ABEL语言设计  (3)
非典应用怪潭  (9)
尿童答疑  (5)
尿童图解  (3)
串行数据通讯  (9)
自言自语  (39)
看门狗专栏  (12)
非典型LPCARM专栏  (2)
实用电子书籍  (1)
LPCARM之ISP  (12)
菜农键盘专栏  (14)
51反汇编  (26)
51演示程序  (4)
串口通讯专栏  (13)
函数指针  (1)
LPCARM爬鸟  (6)
程序安全  (4)
菜农文件  (5)
ARM入门  (1)
开源文件包  (3)
SPI接口  (3)
I2C接口  (12)
程序优化  (3)
上位机  (7)
菜农搞笑  (42)
CRC专栏  (47)
菜农文集  (3)
数据库  (10)
LabWindows/CVI  (19)
CRC/PEC  (20)
菜农的HotComm串口控件  (26)
无线通讯  (6)
IAR C++  (4)
USB  (9)
电源技术  (1)
PIC C30  (4)
STM32菜鸟实习  (19)
三十年追梦  (8)
LM菜鸟实习  (9)
单总线通讯  (6)
电信交换  (14)
CPLD  (2)
DSP/BIOS  (36)
DSP GEL语言  (5)
MSP430  (7)
DSP2812  (13)
DSP5402  (26)
DSP206  (3)
DSP/RTDX  (9)
COM编程技术  (14)
C++裸奔**系列  (9)
HotBIOS  (13)
C5402CFG头文件  (7)
红色黑客  (18)
菜农公式  (9)
VC++程序设计  (25)
C#编程设计  (47)
菜农玩C#  (9)
VB.Net程序设计  (6)
菜农玩VB.NET  (6)
Java程序设计  (17)
菜农玩Java  (3)
HotTask51操作系统  (26)
HotC51共产儿童团  (59)
HotTIDSP帝国  (3)
TI博客大赛  (0)
HotCRC逆向世界  (8)
HotWC3密码  (37)
菜农奔甲子系列之  (4)
菜农命题定理及公式  (4)
HotAjax  (4)
WEB编程  (9)
Cortex-M0   (15)
新浪微博  (5)

使用特权

评论回复
宇宙飞船|  楼主 | 2010-8-8 10:39 | 显示全部楼层
老顽童学的东西太杂了!用来写写博客还可以,很多与真正做产品无关。
学习那些技术(每一样学得半桶水)是浪费生命!

有各有志,飞船仅是对汇编情有独钟,C也仅是用GCC,至于C++,多年前早就放弃。至于其它的编程语言一概不理!

使用特权

评论回复
123jj| | 2010-8-8 10:44 | 显示全部楼层
好像有网友要用51的位汇编指令写一个8位加法器。

建议飞船也用位汇编指令写一个8位减法器,PK一下,不要整天喊口号,一个字“烦”。

使用特权

评论回复
粉丝| | 2010-8-8 10:54 | 显示全部楼层
AVR也有blt 指令,与51相比写布尔表达式没那么方便而已。
这点小玩想难倒飞船!去难你主子还差不多!

使用特权

评论回复
粉丝| | 2010-8-8 10:56 | 显示全部楼层
要比拼就用AVR的汇编来写!就让俺粉丝出马!谁敢应战!请速报上名来!

使用特权

评论回复
gyfeng1017| | 2010-8-8 11:02 | 显示全部楼层
飞船,别跟他们搞口水仗,抓紧时间更新,等着跟你学习成为高手呢,呵呵。

使用特权

评论回复
123jj| | 2010-8-8 11:05 | 显示全部楼层
呵呵,求之不得,题目随你出,不要说俺师傅欺负小朋友,尽管俺的本事只学到俺师傅的十分之一不到,PK一下天上漂的、水下逃的、放在手里一抓就碎的粉丝之流,连眼睛都不用眨一下就大获全胜了!

使用特权

评论回复
宇宙飞船|  楼主 | 2010-8-8 11:22 | 显示全部楼层
支持你们PK,这个布尔机,你们就用AVR的汇编指令来写就是了。
也让世人见识一下AVR的布尔代数处理能力!

会写加法,就会写减法(加法+补码),
加减法的太简单,要PK就来复杂一点的乘法!

使用特权

评论回复
123jj| | 2010-8-8 11:52 | 显示全部楼层
偶接受挑战!

请问时间限定为多长?

使用特权

评论回复
粉丝| | 2010-8-8 14:07 | 显示全部楼层
给你一个星期,粉丝陪你玩!

使用特权

评论回复
Apmvista| | 2010-8-8 16:45 | 显示全部楼层
围观,围观,看你们口水战打得是挺爽的,不知道真功夫咋样。
反正俺是菜鸟,俺来就是学东西的,不论你们谁赢谁输,肯定都能让俺受益匪浅,大家赶紧的动真格的啊!

使用特权

评论回复
hotpower| | 2010-8-8 20:42 | 显示全部楼层
飞船,别跟他们搞口水仗,抓紧时间更新,等着跟你学习成为高手呢,呵呵。
gyfeng1017 发表于 2010-8-8 11:02


赞成,技术会友乃菜农之本意。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:技术是玩出来的!

75

主题

1664

帖子

4

粉丝