百度空间 | 百度首页 
 
查看文章
 
Persits:AspUpload与AspEncrypt 组件联合作战:上传文件的加密与解密
2007-05-21 15:28

一,aspupload上传并用AspEncrypt加密

    1,建立上传表单,upload.html.

<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="upload.asp">

   <INPUT TYPE=FILE SIZE=60 NAME="FILE1"><BR>
   <INPUT TYPE=FILE SIZE=60 NAME="FILE2"><BR>
   <INPUT TYPE=FILE SIZE=60 NAME="FILE3"><BR>
   <INPUT TYPE=SUBMIT VALUE="Upload!">
</FORM>

    2,处理上传并加密,文件 upload.asp.

<%   '本例子需要服务器安装 AspEncrypt组件、Aspupload组件 .

const Password = "12345"    '加密所用的key
    
Set CM = Server.CreateObject("Persits.CryptoManager") '创建加密对象 cm
Set Context = CM.OpenContext( "mycontainer", True )
Set Key = context.GenerateKeyFromPassword(Password)'设置key

Set Upload = Server.CreateObject("Persits.Upload.1") '创建aspupload上传对象
Upload.OverwriteFiles = False
Upload.SaveEncrypted server.mappath("uploadfile"), Key, ".xxx"     '加密方式上传
%><TABLE BORDER=1>
<TR><TH>Path</TH><TH>Content-Type</TH><TH>Size</TH></TR>
<%
For Each File in Upload.Files
   Response.Write "<TR><TD>" & File.Path & "</TD><TD>" & _
    File.ContentType & "</TD><TD>" &_
    File.Size & "</TD></TR>"
Next
%>
</TABLE>

注意事项:创建两个文件后,在相同目录下,创建一个叫uploadfile的文件夹(并保证该文件夹可写入),以保存上传的文件,然后在iis环境下运行upload.html。同时要记住上传时所用的key值,因为解密的时候要用到这个key才可以解密。

二,aspupload上传并用AspEncrypt解密

      1,创建解密上传表单decrypted1.asp,代码如下:

<!--METADATA TYPE="TypeLib" UUID="{B72DF063-28A4-11D3-BF19-009027438003}"-->    <!--这句不可缺少-->

<FORM METHOD="POST" ACTION="decrypted2.asp" ENCTYPE="multipart/form-data">
选择要解密的文件:<INPUT TYPE=FILE NAME="FileToEncrypt">   <BR/>
Password: <INPUT TYPE=TEXT SIZE=30 NAME="Password">    <BR/>
Cipher:     <SELECT NAME="Alg">
    <OPTION VALUE="<% = calgRC2 %>">RC2
    <OPTION VALUE="<% = calgRC4 %>">RC4
    <OPTION VALUE="<% = calgDES %>">DES
    <OPTION VALUE="<% = calg3DES %>">Triple DES
    </SELECT>   <BR/>
<INPUT TYPE=SUBMIT NAME="Encrypt" VALUE="上传并解密">
</Form>

    2,上传并解密,decrypted2.asp
<!--METADATA TYPE="TypeLib" UUID="{B72DF063-28A4-11D3-BF19-009027438003}"--> <!--这句不可缺少-->

<%
Set Upload = Server.CreateObject("Persits.Upload")
Set CM = Server.CreateObject("Persits.CryptoManager")
Set Context = CM.OpenContext("mycontainer", True)
Upload.Save server.mappath("uploadfile")

If Upload.Files.Count > 0 Then
  
   alg = CInt(Upload.Form("alg"))
   Password = Upload.Form("password")
  
   Set Key = Context.GenerateKeyFromPassword(Password,calgSHA,alg )
   For Each File in Upload.Files

     FileName = File.ExtractFileName
     If Right(FileName, 4) = ".xxx" Then FileName = Left( FileName, Len(FileName) - 4 )   '可修改扩展名.xxx
    
     On Error Resume Next
     Key.DecryptFile File.Path, server.mappath("uploadfile")&"/" & FileName
    
     If Err = 0 Then
      Response.write("上传并解密完成。你可以选择下载解密后的文件……")
      Response.write("<a href="&server.mappath("uploadfile")&"/" & FileName&">"&FileName&"</a>")
     Else
      Response.write("发生错误:"& Err.Description)
        End If
    
     Next
   Else
    Response.Write "No files were uploaded."
   End If
%>


类别:默认分类 | 添加到搜藏 | 浏览() | 评论 (1)
 
最近读者:
 
网友评论:
1
2008-12-21 15:11 | 回复
hi,博主,这是你的原创吗?我最近刚好要用到aspencrypt, 如果我想要整个文件加密,就是当浏览者访问一个网页的时候,看不到源代码,应该怎样做呢?
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu