編碼:
Public function string of_decode (string as_text,string as_key);
string ls_encode
string ls_c0d0
string ls_c0
string ls_d0
string ls_k[16]
string ls_k2[16]
integer pc1[]
integer pc2[]
integer i
string ls_key
integer k
string ls_text
string ls_64bit
ls_key = of_getkey(as_key)
pc1 = {57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4}
pc2 = {14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32}
ls_c0d0 = of_trans(pc1,ls_key)
ls_c0 = left(ls_c0d0,28)
ls_d0 = right(ls_c0d0,28)
FOR i = 1 TO 16 //6
IF (((i = 1 OR i = 2) OR i = 9) OR i = 16) THEN //7
ls_c0 = of_left_trans(ls_c0,1)
ls_d0 = of_left_trans(ls_d0,1)
ELSE //7
ls_c0 = of_left_trans(ls_c0,2)
ls_d0 = of_left_trans(ls_d0,2)
END IF //7
ls_c0d0 = ls_c0 + ls_d0
ls_k[i] = of_trans(pc2,ls_c0d0)
NEXT //6
FOR i = 1 TO 16 //16
ls_k2[i] = ls_k[17 - i]
NEXT //16
ls_text = trim(as_text)
IF len(ls_text) = 0 THEN //20
RETURN ""
END IF //20
ls_text = of_16to2(ls_text)
k = mod(len(ls_text),64)
IF k > 0 THEN //24
FOR i = 1 TO ((64 - k) / 8) //25
ls_text = ls_text + "0010000"
NEXT //25
END IF //24
FOR i = 1 TO (len(ls_text) / 64) //28
ls_64bit = mid(ls_text,((i - 1) * 64) + 1,64)
ls_encode = ls_encode + of_cryptograph(ls_64bit,ls_k2)
NEXT //28
ls_encode = trim(of_tostring(ls_encode))
RETURN ls_encode
end function
of_getkey:
Protected function string of_getkey (string as_key);
integer li_i
integer li_asc
string ls_key
string ls_binary
long ll_key
IF (isnull(as_key) OR len(trim(as_key)) = 0) THEN //0
FOR li_i = 1 TO 64 //1
ls_key = ls_key + string(mod(li_i,2))
NEXT
RETURN ls_key
END IF
FOR li_i = 1 TO len(as_key) //5
ll_key += asc(mid(as_key,li_i,1))
NEXT
ls_binary = of_binary(ll_key)
ls_key = ls_binary
FOR li_i = 1 TO (64 - len(ls_binary)) //10
ls_key = ls_key + string(mod(li_i,2))
NEXT
RETURN ls_key
end function
定義of_des(另有個解碼代碼,用不到,所以就不上了)
Public function string of_des (string as_string,integer ai_dec,string as_factor);
string ls_return
IF ai_dec = 1 THEN //0
ls_return = inv_des.of_encode(as_string,as_factor)
ELSE //0
ls_return = inv_des.of_decode(as_string,as_factor)
END IF //0
RETURN ls_return
呼叫:
ls_temp = inv_regnet.of_des(ls_temp,1,ls_factor)
該陳述句在其它程式上運行正常,移植到其它程式時就報錯為:null object reference
求解?
uj5u.com熱心網友回復:
ls_c0d0 = of_trans(pc1,ls_key)處報錯.應該是ls_key沒有值回傳.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/41784.html
標籤:基礎類
下一篇:DW怎樣顯示¥符號
