首先簡單介紹一下有關(guān)加密的背景,。由于美國禁止幾種密碼算法的對(duì)外出口的加密位數(shù)(例如ssl的40位加密限制),,本文將介紹一種asp能使用的簡單字符加密算法,而不是那些受限制的加密算法,。其實(shí),,這里介紹的加密算法對(duì)于一般的運(yùn)用來說已足夠 解密人麻煩一陣子的了。他的加密基礎(chǔ)是最簡單的vernum密碼方法,,基本原理是,,需要有一個(gè)需要加密的明文和一個(gè)隨機(jī)生成的解密鑰匙文件。然后使用這兩個(gè)文件組合起來生成密文。 (明文) 組合 (密鑰) = 加密后的密文 所以本文介紹的是生成密鑰的代碼,。我們假設(shè)我們生成的密鑰為512位長的密鑰, 他已足夠來加密一個(gè)文本字符了,。代碼如下: keygen.asp文件 <% ****************************** keygen.asp ****************************** const g_keylocation = "c:\key.txt" const g_keylen = 512
on error resume next
call writekeytofile(keygen(g_keylen),g_keylocation)
if err <> 0 then response.write "error generating key." & "<p>" response.write err.number & "<br>" response.write err.description & "<br>" else response.write "key successfully generated." end if
sub writekeytofile(mykeystring,strfilename) dim keyfile, fso set fso = server.createobject("scripting.filesystemobject") set keyfile = fso.createtextfile(strfilename, true) keyfile.writeline(mykeystring) keyfile.close end sub
function keygen(ikeylength) dim k, icount, strmykey lowerbound = 35 upperbound = 96 randomize initialize random-number generator. for i = 1 to ikeylength s = 255 k = int(((upperbound - lowerbound) + 1) * rnd + lowerbound) strmykey = strmykey & chr(k) & "" next keygen = strmykey end function
%> 在iis下運(yùn)行上面的keygen.asp頁面,。你只需要如此做一次,他將把密鑰寫入文件 c:\key.txt中 (如果你愿意的話,,你也能把這個(gè)文件放到另外一個(gè)更加安全的地方). 然后你能打開這個(gè)key.txt文件,,他將包含512個(gè)ascii碼在35到96之間的字符. 并且由于是隨機(jī)生成的,所以每個(gè)人的私人密鑰文件key.txt將是不相同的,,下面是 一個(gè)例子密鑰文件: iy/;$>=3)?^-+7m32#q]voii.q=ofmc`:p7_b;<r/8u)xfhc<sr_e$.dlg=i+@5%*+op:f_=; nsy`-^s.`aa=bj3m0.wf#t5lgk(=/<:+c2k/^7ai$;puome2+t8nd?w$c(j\,;631m-ld5f%%1 tf_&k2a-d-54[2p,#*ju%6`0rf3cmf0(#t07ufz=>#,+.aw_/+]dib;2dtia57tt&-)o/*f m>h.xh5w^0y*=71+5*^`^pkj(=e/x#7a:?,s>r&t;+b#<:-*\@)x9f`_`%qa3z95.?_t#1,$2#fw w5pbh^*<])a(s0@avd8c^q0r^t1d?(1+,ye71x+.*+u$:3xo^q].kg&0n0];[lj<oz6in?7n4<gt l?(m4s8+3jmk5]hc%^1^+k;\$wbxpa?f&5^e\d$7%*o/u[1/?8(5:1ovwv*1z-%`:k&v?x1,1ku rd@3w0^d)<og40?(vj4ewl5a5m<$a);cq36r9i]*u#q%1<y\&sa%#1<v 下面再仔細(xì)分析一下上面的程式,,我們發(fā)現(xiàn)其中的lowerbound和upperbound的數(shù)值 其實(shí)就是你想使用來加密的ascii字符范圍。
|