| 
 
| 本帖最后由 宇宙飞船 于 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
 欲知后事如何,请听下回分解。
 | 
 |