使用ASP加密算法加密你的数据(二)(转)

博客介绍了在Crypt.asp中实现加密解密的方法。先从密钥文件获取密钥,截取与明文等长部分,用异或操作加密明文得到密文,解密时用相同密钥对密文再做异或操作。还提到可稍作改动加密文件,要注意二进制文件完整性检查,密钥需存于安全处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个字符串。
下面的代码就是能够同时实现这个功能的函数
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 "

ORIGINAL STRING: " & g_CryptThis & "

"
Response.Write "

KEY VALUE: " & g_Key & "

"
Response.Write "

ENCRYPTED CYPHERTEXT: " & EnCrypt(g_CryptThis)
& "

"
Response.Write "

DECRYPTED CYPHERTEXT: " & DeCrypt(EnCrypt
(g_CryptThis)) & "

"

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


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-124669/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-124669/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值