中望lisp加密_alisp文件加密测试.LSP
alisp文件加密測(cè)試.LSP
(2012-02-26 17:02:35)
標(biāo)簽:
四柱液壓機(jī)
三
娛樂
alisp文件加密測(cè)試.LSP
最后修改時(shí)間: ;|alisp文件加密的探索AutoLISP保護(hù)文件的格式
AutoCAD雖然沒有提供加密、解密AutoLISP的工具軟件,但其本身卻可以接收兩種格式的LISP文件.一種是保護(hù)格式的;另一種是文本格式的.讀入文件后,AutoCAD首先會(huì)作出判斷,一旦確定文件是保護(hù)格式的,則在加載該程序前,自動(dòng)將加密文件代碼予以還原,然后再讀入命令解釋器.下面我們來看看AutoLISP保護(hù)格式文件的格式.起始地址及終止地址(Bytes)
功能 0-29 保護(hù)文件的標(biāo)識(shí)字符串計(jì)30Bytes,為"AutoCAD PROTECTED
LISP file\0x0D\0x0A\0x1A". 30 密碼字符,只有一個(gè)字節(jié). 31及以后
已加密的程序碼.注意:前30個(gè)字節(jié)用戶不得改動(dòng); 第30位是密碼字母,龍門液壓機(jī),用戶可以任意給定,譬如字母'A';
第31位起可由附錄程序經(jīng)過加密計(jì)算后寫入文件.**加密與解密的原理**
加密與解密的一個(gè)重要工具是"按位異或(^)運(yùn)算".其作用是判斷兩運(yùn)算量相應(yīng)位的值是否"相異",若為異,則為1,否則為0.即:0^0=0;0^1=1;1^0=1;1^1=0.因其具有雙向轉(zhuǎn)換、還原的能力,四柱三梁,故在密碼學(xué)上得到廣泛應(yīng)用.讓我們來看看:
A|01000001 8|00111000 ^y|01111001 ^A|01000001 8|00111000
y|01111001上式中0x41='A'、0x79='y'、0x38='8',
'A'^'y'='8';'8'^'A'='y';'y'^'8'='A'. 可以看出按位異或運(yùn)算具有雙向轉(zhuǎn)換、還原的能力.
AutoCAD在加密、解密時(shí),除了運(yùn)用上述方法外,四柱液壓機(jī),另外還使用了一個(gè)技巧,就是移位運(yùn)算,
將被轉(zhuǎn)換字符的8個(gè)位全部左移一位,相當(dāng)于將該整數(shù)乘以2,若最高位是1(移位后>256),
則將溢出位1移至最末位,否則用0代替末位,這樣就保證了加密碼與原代碼一一對(duì)應(yīng).我們假設(shè)用函數(shù)F表示這一運(yùn)算過程.----字符0x96,二進(jìn)制為10010110,則F(0x96)=F(10010110)=00101101=0x2D.----我們用下面兩個(gè)算式,三梁四柱油壓機(jī),來說明加密、解密的具體過程,式中各符號(hào)的意義:A0->B=A^B;A-B=F(A)^B;A/B=F(A)^B;各字符均以16進(jìn)制表示,假設(shè)密碼字母是'A'(0x41).原始程序碼為:(PRINC)加密過程如下:----(princ)
-> 28 70 72 69 6E 63 29 具體過程為: 1、0x41^0x28=0x69;
(按位異或) 2、F(0x69)=0xD2; (移位運(yùn)算) 3、0xD2^0x70=0xA2; (按位異或)
2、F(0xA2)=0x45; (移位運(yùn)算) 3、0x45^0x72=0x37;結(jié)果(69 A2 37 07 60 A3
6E)解密過程如下:----41->
69-A2-37-76-0A-36-ED-hh(依次類推)----287072696E6329結(jié)果(PRINC)具體過程為:1、0x41^0x69=0x28;(字符'(')2、F(0x69)=0xD2;3、0xD2^0xA2=0x70;(字符'p')hh|功能:定義函數(shù),實(shí)現(xiàn)
左移一位操作;|;;測(cè)試:(setq lst (vl-string->list
"(princ)lst 65)|;(defun F+ (INT / TMP) ;;先轉(zhuǎn)換成二進(jìn)制
(setq TMP (DEG->BIN INT)) ;;補(bǔ)齊為 8 位(while
(< (strlen TMP) 8) (setq TMP (strcat
"0" TMP)) ) ;;將首位移動(dòng)到末位 (setq TMP
(strcat (substr TMP 2 7) (substr TMP 1 1))) ;;返回
(BIN->DEG TMP)功能:仿autolisp加密文本(defun ++++ (LST
KEYSCI / LST1 N TMP) (setq LST1 foreach N LST (progn 異或操作 (setq TMP
(boole 6 KEYSCI N)) (setq LST1 (cons TMP LST1)計(jì)算下一個(gè) 密匙 (setq KEYSCI
(F+ TMP)返回 ;;(vl-list->string (reverse LST1))
(reverse LST1)解密;;; (defun ---- (LST KEYSCI / LST1 N TMP) (setq
LST1 foreach N LST (progn 異或操作 (setq TMP (boole 6 KEYSCI N)) (setq
LST1 (cons TMP LST1)計(jì)算下一個(gè) 秘匙 (setq KEYSCI (F+ N)返回
;;(vl-list->string (reverse LST1)) (reverse
LST1)defun C:TT1 (/ STR LST FF N) ;; (setq STR
"(PRINC
\"OK\")") (setq
LST (vl-string->list STR)) (setq LST (++++ LST 65))
;;寫入文件 (setq FF (open
"d:\\test\\test.txt"
"w")) (foreach N LST (write-char
N FF) ) (close FF) (princ)defun C:TT2 (/ LST FF TMP N) (setq LST
'()) ;;讀文件 (setq FF (open
"d:\\test\\test.txt"
"r")) (while (setq TMP (read-char
FF)) (setq LST (cons TMP LST)) ) (close FF) ;; (setq LST (----
(reverse LST) 65)) (princ (vl-list->string LST))
(princ)加入文件頭(defun C:TT3 (/ LST FF TMP N I) (setq LST '()) ;;讀文件
(setq FF (open
"d:\\test\\test.txt"
"r")) (while (setq TMP (read-char
FF)) (setq LST (cons TMP LST)) ) (close FF) ;;寫入文件 (if (setq FF
(open "d:\\test\\test.lsp"
"w")) (progn ;;寫入文件頭 (foreach N
(vl-string->list "AutoCAD PROTECTED
LISP file") (write-char N FF) ) (write-char 13 FF)
(write-char 10 FF) (write-char 26 FF) ;;寫入 (write-char 65 FF)
;;寫入文件內(nèi)容 (setq STR "(alert
\"測(cè)試成功\")(PRINC
\"OK\")") (setq
LST (vl-string->list STR)) (setq LST (++++ LST 65))
(foreach N LST (write-char N
FF)princ)十進(jìn)制轉(zhuǎn)化為二進(jìn)制;;;例如:(deg->bin 3)
返回"11";;;
(deg->bin 5)
返回"101"(defun
DEG->BIN (INT / A B) (if (< INT 1)
"0" (if (= INT 1)
"1" (progn (setq A (/ INT 2) B (-
INT (* A 2)) ) (strcat (DEG->BIN A) (itoa
B)二進(jìn)制轉(zhuǎn)化為十進(jìn)制;;;例如:(bin->deg
"11") 返回 3;;;
(deg->bin "101")
返回 5(defun BIN->DEG (STR) (if (<=
(strlen STR) 1) (if (= STR "1") 1
0 ) (if (= (substr STR 1 1) "1")
(+ (expt 2 (- (strlen STR) 1)) (BIN->DEG (substr STR
2)) ) (BIN->DEG (substr STR 2)) ) ))
分享:
喜歡
0
贈(zèng)金筆
加載中,請(qǐng)稍候......
評(píng)論加載中,請(qǐng)稍候...
發(fā)評(píng)論
登錄名: 密碼: 找回密碼 注冊(cè)記住登錄狀態(tài)
昵???稱:
評(píng)論并轉(zhuǎn)載此博文
發(fā)評(píng)論
以上網(wǎng)友發(fā)言只代表其個(gè)人觀點(diǎn),不代表新浪網(wǎng)的觀點(diǎn)或立場(chǎng)。
總結(jié)
以上是生活随笔為你收集整理的中望lisp加密_alisp文件加密测试.LSP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为鸿蒙系统提升,首个华为鸿蒙2.0续航
- 下一篇: virtualBox安装GHO镜像