文档上传到服务器上后,如果单独要打开该文档时不让他打开,提示要输入密码。如果是在页面上链接下载打开的话,也要提示输入密码后才能打开。这个该怎么做啊?

解决方案 »

  1.   

    是office文档吧?
    office文档本身就有加密码功能
      

  2.   

    /// <summary> 
    /// 加密字符串,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了)
    /// </summary> 
    /// <param name="strText">待加密文本</param> 
    /// <param name="strEncrKey">key</param> 
    /// <returns></returns> 
    public string DesEncrypt(string strText, string strEncrKey) 

    byte[] byKey=null; 
    byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
    try 

    byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0,8)); 
    DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
    byte[] inputByteArray = Encoding.UTF8.GetBytes(strText); 
    MemoryStream ms = new MemoryStream(); 
    CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write) ; 
    cs.Write(inputByteArray, 0, inputByteArray.Length); 
    cs.FlushFinalBlock(); 
    return Convert.ToBase64String(ms.ToArray()); 

    catch(System.Exception error) 

    return "error:" +error.Message+"\r"; 

    }  /// <summary> 
    /// 解密字符串,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了) 
    /// </summary> 
    /// <param name="strText">解密的字符串</param> 
    /// <param name="sDecrKey">key</param> 
    /// <returns>输出字符串</returns> 
    public string DesDecrypt(string strText,string sDecrKey) 

    byte[] byKey = null; 
    byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
    byte[] inputByteArray = new Byte[strText.Length]; 
    try 

    byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0,8)); 
    DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
    inputByteArray = Convert.FromBase64String(strText); 
    MemoryStream ms = new MemoryStream(); 
    CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write); 
    cs.Write(inputByteArray, 0, inputByteArray.Length); 
    cs.FlushFinalBlock(); 
    System.Text.Encoding encoding = new System.Text.UTF8Encoding(); 
    return encoding.GetString(ms.ToArray()); 

    catch(System.Exception error) 

    return "error:"+error.Message+"\r"; 

    }  /// <summary> 
    /// 加密数据文件,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了) 
    /// </summary> 
    /// <param name="m_InFilePath">加密文件路径</param> 
    /// <param name="m_OutFilePath">输出路径</param> 
    /// <param name="strEncrKey">key</param> 
    public void DesEncrypt(string m_InFilePath,string m_OutFilePath,string strEncrKey) 

    byte[] byKey=null; 
    byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
    try 

    byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0,8)); 
    FileStream fin = new FileStream(m_InFilePath, FileMode.Open, FileAccess.Read); 
    FileStream fout = new FileStream(m_OutFilePath, FileMode.OpenOrCreate, FileAccess.Write); 
    fout.SetLength(0); 
    //Create variables to help with read and write. 
    byte[] bin = new byte[100]; //This is intermediate storage for the encryption. 
    long rdlen = 0; //This is the total number of bytes written. 
    long totlen = fin.Length; //This is the total length of the input file. 
    int len; //This is the number of bytes to be written at a time.  DES des = new DESCryptoServiceProvider(); 
    CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);  //Read from the input file, then encrypt and write to the output file. 
    while(rdlen < totlen) 

    len = fin.Read(bin, 0, 100); 
    encStream.Write(bin, 0, len); 
    rdlen = rdlen + len; 
    }  encStream.Close(); 
    fout.Close(); 
    fin.Close(); 

    catch(System.Exception error) 

    MessageBox.Show(error.Message.ToString()); 

    }  /// <summary> 
    /// 解密数据文件,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了) 
    /// </summary> 
    /// <param name="m_InFilePath">解密文件路径</param> 
    /// <param name="m_OutFilePath">输出路径</param> 
    /// <param name="sDecrKey">key</param> 
    public void DesDecrypt(string m_InFilePath,string m_OutFilePath,string sDecrKey) 

    byte[] byKey = null; 
    byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
    try 

    byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0,8)); 
    FileStream fin = new FileStream(m_InFilePath, FileMode.Open, FileAccess.Read); 
    FileStream fout = new FileStream(m_OutFilePath, FileMode.OpenOrCreate, FileAccess.Write); 
    fout.SetLength(0); 
    //Create variables to help with read and write. 
    byte[] bin = new byte[100]; //This is intermediate storage for the encryption. 
    long rdlen = 0; //This is the total number of bytes written. 
    long totlen = fin.Length; //This is the total length of the input file. 
    int len; //This is the number of bytes to be written at a time.  DES des = new DESCryptoServiceProvider(); 
    CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write);  //Read from the input file, then encrypt and write to the output file. 
    while(rdlen < totlen) 

    len = fin.Read(bin, 0, 100); 
    encStream.Write(bin, 0, len); 
    rdlen = rdlen + len; 

    encStream.Close(); 
    fout.Close(); 
    fin.Close(); 

    catch(System.Exception error) 

    MessageBox.Show( "error:"+error.Message); 

    }
      

  3.   

    OFFICE自己本身就可以加密的。
    可以根据用户的权限来设计的啊。没有权限就不让他看见,有密码也没有用。
    用户能看见的就让他可以下载