|
整數(shù)直角三角形謎底——一種MCU加密解密算法
勾3股4弦5!每個人都明白。
對應(yīng)的數(shù)學(xué)表達式:a^2+b^2=c^2.每個人都會!
但在a>=3且a,b,c都為整數(shù)的直角三角形問題中
已知a求b,c無窮解變成了數(shù)學(xué)歸納問題的唯一解。
例: 解:
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
數(shù)學(xué)歸納(加密過程):
當a為奇數(shù)時,b為a平方砍半取整,c比b大1。、
即 b="int"((a^2)/2). c="b"+1.
當a為偶數(shù)時,b為a砍半平方小1,c比b大2。
即 b=(a/2)^2-1. c="b"+2.
字節(jié)加密與解密問題:
由于本算法從3開始,而字節(jié)值從0開始。故需加減3轉(zhuǎn)換。
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為奇數(shù)時有: 密碼BC=(密碼B/2)|0x8000
當a為偶數(shù)時有: 密碼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時,昏天蓋地的開方與乘方匯編產(chǎn)生的代碼
一定會使解讀者頭昏眼花的!!!
因為解讀者將搞不清原設(shè)計者在干些什麼活動???
HotPower在此聲明:
未經(jīng)本人許可,本算法不得在任何地方發(fā)表。
否則,一切后果自負!
2003。7。17 |
|