欢迎光临
我们一直在努力

使用ASP加密算法加密你的数据-ASP教程,安全加密

建站超值云服务器,限时71元/月

使用asp加密算法加密你的数据简介

首先简单介绍一下有关加密的背景。由于美国禁止几种密码算法的对外出口的加密位数(例如ssl的40位加密限制),本文将介绍一种asp可以使用的简单字符加密算法,而不是那些受限制的加密算法。其实,这里介绍的加密算法对于一般的运用来说已经足够解密人麻烦一阵子的了。它的加密基础是最简单的vernum密码方法,我将在下一篇文章中介绍这种密码。

它的基本原理是,需要有一个需要加密的

明文和一个随机生成的解密钥匙文件。然后使用这两个文件组合起来生成密文。

(明文) 组合 (密钥) = 加密后的密文

所以本文介绍的是生成密钥的代码。我们假设我们生成的密钥为512位长的密钥,它已经足够来加密一个文本字符了。代码如下:

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下运行上面的keygen.asp页面。你只需要如此做一次,他将把密钥写入文件c:\key.txt中 (如果你愿意的话,你也可以把这个文件放到另外一个更加安全的地方).然后你可以打开这个key.txt文件,它将包含512个ascii码在35到96之间的字符.并且由于是随机生成的,所以每个人的私人密钥文件key.txt将是不一样的,下面是一个例子密钥文件:

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%%1tf_&k2a-d-54[2p,#*ju%6`0rf3cmf0

(#t07ufz=>#,+.aw_/+]dib;2dtia57tt&-)o/*fm>

h.xh5w^0y*=71+5*^`^pkj(=e/x#7a:?,s>r&t;+b#<:-*

\@)x9f`_`%qa3z95.?_t#1,$2#fww5pbh^*<])a(

s0@avd8c^q0r^t1d?(1+,ye71x+.*+u$:3xo^q].kg&0n0];

[lj<oz6in?7n4<gtl?(m4s8+3jmk5]hc%^1^+k;\

$wbxpa?f&5^e\d$7%*o/u[1/?8(5:1ovwv*1z-%`:k&v?x1,

1kurd@3w0^d)<og40?(vj4ewl5a5m<$a);cq36r9i]*u#q%1

<y\&sa%#1<v

下面再仔细分析一下上面的程序,我们发现其中的lowerbound和upperbound的数值其实就是你想使用来加密的ascii字符范围。后面一篇文章中将介绍如何使用这个密钥来加密和解密一个字符串

在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个字符串。

下面的代码就是能够同时实现这个功能的函数

crypt.asp文件

<%

dim g_key

const g_cryptthis = "now is the time for

all good men to come to the aid of their country."

const g_keylocation = "c:\key.txt"

g_key = mid(readkeyfromfile(g_keylocation),1,len(g_cryptthis))

response.write "<p>original string: " & g_cryptthis & "<p>"

response.write "<p>key value: " & g_key & "<p>"

response.write "<p>encrypted cyphertext: " & encrypt(g_cryptthis) & "<p>"

response.write "<p>decrypted cyphertext: " & decrypt(encrypt(g_cryptthis)) & "<p>"

function encrypt(strcryptthis)

dim strchar, ikeychar, istringchar, i

for i = 1 to len(strcryptthis)

ikeychar = asc(mid(g_key,i,1))

istringchar = asc(mid(strcryptthis,i,1))

 *** uncomment below to encrypt with addition,

 icryptchar = istringchar + ikeychar

icryptchar = ikeychar xor istringchar

strencrypted = strencrypted & chr(icryptchar)

next

encrypt = strencrypted

end function

function decrypt(strencrypted)

dim strchar, ikeychar, istringchar, i

for i = 1 to len(strencrypted)

ikeychar = (asc(mid(g_key,i,1)))

istringchar = asc(mid(strencrypted,i,1))

 *** uncomment below to decrypt with subtraction

 idecryptchar = istringchar – ikeychar

idecryptchar = ikeychar xor istringchar

strdecrypted = strdecrypted & chr(idecryptchar)

next

decrypt = strdecrypted

end function

function readkeyfromfile(strfilename)

dim keyfile, fso, f

set fso = server.createobject("scripting.filesystemobject")

set f = fso.getfile(strfilename)

set ts = f.openastextstream(1, -2)

do while not ts.atendofstream

keyfile = keyfile & ts.readline

loop

readkeyfromfile = keyfile

end function

%>

在crypt.asp中我们首先从密钥文件中得到密钥值,然后从这段密钥中截取和我们需要加密的明文同样长度的密钥。然后使用一个简单的异或操作将明文和密钥进行运算,那么得到的结果就是加密后的密文了。过程很简单的。由于是使用了异或操作,所以解密将非常简单,只要使用同样的密钥对密文再次进行异或操作就能够解密了。在上面介绍的基础上,你可以少加改动,就可以使用同样的方法加密一个文件。唯一需要注意的是,对于一个二进制文件,你需要做一些完整性检查以保证转换回来的字符不要越界。现在你需要做的就是把密钥保存在服务器上的一个安全的地方(不能够被外部访问)

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 使用ASP加密算法加密你的数据-ASP教程,安全加密
分享到: 更多 (0)