查看: 2144|回复: 2

整数直角三角形谜底——一种MCU加密解密算法 [复制链接]

hotpower (离线)
积分
82853
帖子
313
发表于 2009-4-2 22:21:28 |显示全部楼层
关键词: MCU , 谜底 , 算法 , 整数 , 直角三角形
整数直角三角形谜底——一种MCU加密解密算法


勾3股4弦5!每个人都明白。
对应的数学表达式:a^2+b^2=c^2.每个人都会!
但在a>=3且a,b,c都为整数的直角三角形问题中
已知a求b,c无穷解变成了数学归纳问题的唯一解。

例:                    解:
3^2 + 4^2= 5^2          9 +  16 = 25
4^2 + 3^2= 5^2         16 +   9 = 25
5^2 +12^2=13^2         25 + 144 = 169         
6^2 + 8^2=10^2         36 +  64 = 100
7^2 +24^2=25^2         49 + 576 = 625
8^2 +15^2=17^2         64 + 225 = 289
9^2 +40^2=41^2         81 +1600 =1681
.....................................................
255^2+32512^2=32513^2   65025+1057030144=1057059169
256^2+16383^2=16385^2   65536+ 268402689= 268468225
257^2+33024^2=33025^2   66049+1090584576=1090650625
258^2+16640^2=16642^2   66564+ 276889600= 276956164

数学归纳(加密过程):
当a为奇数时,b为a平方砍半取整,c比b大1。、
即 b="int"((a^2)/2). c="b"+1.

当a为偶数时,b为a砍半平方小1,c比b大2。
即 b=(a/2)^2-1. c="b"+2.

字节加密与解密问题:
    由于本算法从3开始,而字节值从0开始。故需加减3转换。

10进制表示
    原码A     密码B     密码C
      0(3)      4         5
      1(4)      3         5
      2(5)     12        13
      3(6)      8        10
      4(7)     24        25
      5(8)     15        17
      6(9)     40        41
      7(10)    24        26
。。。。。。。。。。。。。。。。。。。。。。。。。。
    252(255)  32512     32513
    253(256)  16383     16385
    254(257)  33024     33025
    255(258)  16640     16642

16进制表示
    原码A     密码B     密码C    (2字长)
     00        0004      0005
     01        0003      0005  (最小值为0003H,0005H)  
     02        000C      000D
     03        0008      000A
     04        0018      0019
     05        000F      0011
     06        0028      0029
     07        0018      001A
。。。。。。。。。。。。。。。。。。。。。。。。。。
     FC        7F00      7F01
     FD        3FFF      4001
     FE        8100      8101  (最大值为8100H,8101H)
     FF        4100      4102

合并密码B密码C为1个字长:
当a为奇数时有:  密码BC=(密码B/2)|0x8000
当a为偶数时有:  密码BC=密码B

16进制表示
    原码A     密码BC(1字长)
     00        8002 (变换)
     01        0003
     02        8006 (变换)
     03        0008
     04        800C (变换)
     05        000F
     06        8014 (变换)
     07        0018
。。。。。。。。。。。。。。。。。。。。。。。。。。
     FC        BF80 (变换)
     FD        3FFF
     FE        C080 (变换)
     FF        4100

解密过程:
当密码BC>0x8000时有:密码B=(密码BC*2)&0xffff 密码C=密码B+1
当密码BC<0x8000时有:密码B=密码BC             密码C=密码B+2

解密算法:
    原码A=(密码C^2-密码B^2)^(1/2)-3

若对密码B密码C进行2次CRC加密后,该算法将非常可靠。
以后,若有机会,我会道出“CRC的妙用”的。

当用于MCU时,昏天盖地的开方与乘方汇编产生的代码
一定会使解读者头昏眼花的!!!
因为解读者将搞不清原设计者在干些什麽活动???

HotPower在此声明:
    未经本人许可,本算法不得在任何地方发表。
否则,一切后果自负!
                2003。7。17
●█〓██▄▄▄▄▄▄ ●●●●●●→ ''''╭WWWW╮
▄▅██████▅▄▃▂ 传播非典灌水四方 ( ●_●)
███天█马█行█空████ '''',,,;,;,;'''/▇\''
◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲◤ 群魔乱舞见阳光/MMMM\
adspbf531 (离线)
积分
8
帖子
33
发表于 2010-9-26 00:18:52 |显示全部楼层
botasky (离线)
积分
2
帖子
101
发表于 2010-10-13 13:52:21 |显示全部楼层
学习了
您需要登录后才可以发表评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备11013910号 | 京公网安备11010502021702
回顶部