在做asp.net视频网站时,在网页用到了RealPlayer插件和Flash插件,但在用户观看视频时,如何查看网页中的源文件就可以看到视频的物理地址,有什么好的方法不让用户看到这个地址吗?
最好能够给出一个小例子,说的详细些啊?

解决方案 »

  1.   

    如果是用object标签插入的视频,用户估计无论如何都能看见地址,可以用一些折中的方法,比如使用swfobject.js加上ajax动态插入object标签,这样至少不会把视频地址直接写在页面里面
      

  2.   

    WEB系统中加密\解密URL传输参数.     
      网上很多人在问怎么实现Web系统URL传输(表单提交)参数加密。例如:要进行一个用户帐号编辑,要传递用户的ID,URL如下:http://localhost/mysystem/editAccounts.aspx?ID=2   
      但又不想让别人知道这个用户的ID为2,恶意的使用者可能还会将2修改,改为别的用户ID。   
      加密传递的参数值可以解决问题。   
      以下是自己写的DEC加密、解密的基类。   
        
      文件名:Security.CS   
        
      using   System;   
      using   System.Security.Cryptography;   
      using   System.IO;   
      using   System.Text;   
        
      namespace   EIP.Framework   
      {   
        ///     
        ///   Security   的摘要说明。   
        ///   Security类实现.NET框架下的加密和解密。   
        ///   CopyRight   [email protected]@[email protected]   
        ///     
        public   class   Security   
        {   
          string   _QueryStringKey   =   "abcdefgh";   //URL传输参数加密Key   
          string   _PassWordKey   =   "hgfedcba";     //PassWord加密Key   
        
          public   Security()   
          {   
            //   
            //   TODO:   在此处添加构造函数逻辑   
            //   
          }   
        
          ///     
          ///   加密URL传输的字符串   
          ///     
          ///     
          ///     
          public   string   EncryptQueryString(string   QueryString)   
          {   
            return   Encrypt(QueryString,_QueryStringKey);   
          }   
        
          ///     
          ///   解密URL传输的字符串   
          ///     
          ///     
          ///     
          public   string   DecryptQueryString(string   QueryString)   
          {   
            return   Decrypt(QueryString,_QueryStringKey);   
          }   
        
          ///     
          ///   加密帐号口令   
          ///     
          ///     
          ///     
          public   string   EncryptPassWord(string   PassWord)   
          {   
            return   Encrypt(PassWord,_PassWordKey);   
          }   
        
          ///     
          ///   解密帐号口令   
          ///     
          ///     
          ///     
          public   string   DecryptPassWord(string   PassWord)   
          {   
            return   Decrypt(PassWord,_PassWordKey);   
          }   
            
          ///     
          ///   DEC   加密过程   
          ///     
          ///     
          ///     
          ///     
          public   string   Encrypt(string   pToEncrypt,string   sKey)       
          {       
            DESCryptoServiceProvider   des   =   new   DESCryptoServiceProvider();     //把字符串放到byte数组中       
              
            byte[]   inputByteArray   =   Encoding.Default.GetBytes(pToEncrypt);       
            //byte[]     inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);       
            
            des.Key   =   ASCIIEncoding.ASCII.GetBytes(sKey);     //建立加密对象的密钥和偏移量   
            des.IV   =   ASCIIEncoding.ASCII.GetBytes(sKey);       //原文使用ASCIIEncoding.ASCII方法的GetBytes方法     
            MemoryStream   ms   =   new   MemoryStream();           //使得输入密码必须输入英文文本   
            CryptoStream   cs   =   new   CryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write);       
          
            cs.Write(inputByteArray,   0,   inputByteArray.Length);       
            cs.FlushFinalBlock();       
        
            StringBuilder   ret   =   new     StringBuilder();       
            foreach(byte   b   in   ms.ToArray())       
            {       
              ret.AppendFormat("{0:X2}",   b);       
            }       
            ret.ToString();       
            return     ret.ToString();       
          }       
        
          ///     
          ///   DEC   解密过程   
          ///     
          ///     
          ///     
          ///     
          public   string   Decrypt(string   pToDecrypt,   string   sKey)       
          {       
            DESCryptoServiceProvider   des   =   new   DESCryptoServiceProvider();       
          
            byte[]   inputByteArray   =   new   byte[pToDecrypt.Length   /   2];       
            for(int   x   =   0;   x   <   pToDecrypt.Length   /   2;   x++)       
            {       
              int   i   =   (Convert.ToInt32(pToDecrypt.Substring(x   *   2,   2),   16));       
              inputByteArray[x]     =     (byte)i;       
            }       
          
            des.Key   =   ASCIIEncoding.ASCII.GetBytes(sKey);     //建立加密对象的密钥和偏移量,此值重要,不能修改       
            des.IV     =   ASCIIEncoding.ASCII.GetBytes(sKey);       
            MemoryStream   ms   =   new   MemoryStream();       
            CryptoStream   cs   =   new   CryptoStream(ms,   des.CreateDecryptor(),CryptoStreamMode.Write);       
              
            cs.Write(inputByteArray,   0,   inputByteArray.Length);       
            cs.FlushFinalBlock();       
        
            StringBuilder   ret   =   new   StringBuilder();     //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象       
                                  
            return   System.Text.Encoding.Default.GetString(ms.ToArray());       
          }     
        
          ///     
          ///   检查己加密的字符串是否与原文相同   
          ///     
          ///     
          ///     
          ///     
          ///     
          public   bool   ValidateString(string   EnString,   string   FoString,   int   Mode)   
          {   
            switch   (Mode)   
            {   
              default:   
              case   1:   
                if   (Decrypt(EnString,_QueryStringKey)   ==   FoString.ToString())   
                {   
                  return   true;   
                }   
                else   
                {   
                  return   false;   
                }   
              case   2:   
                if   (Decrypt(EnString,_PassWordKey)   ==   FoString.ToString())   
                {   
                  return   true;   
                }   
                else   
                {   
                  return   false;   
                }   
            }   
          }   
        }   
      }   
        
      类中URL及帐号加密使用了不同的KEY。调用URL加密过程如下:   
      EIP.Framework.Security   objSecurity   =   new   EIP.Framework.Security();   
      objSecurity.EncryptQueryString(''待加密的字符串'');   
        
      解密:objSecurity.DecryptQueryString(''传递过来的参数);參考下吧
      

  3.   

    反盗链
    进行Base64编码
    byte[] byt = Convert.FromBase64String(url);
    Stream  stream = new MemoryStream(html2bytes); string a = ""'
    byte[] b = System.Text.Encoding.Default.GetBytes(a);    
    a = Convert.ToBase64String(b);
    Response.Write(a);//转回到原来的
    byte[] c = Convert.FromBase64String(a);
    a = System.Text.Encoding.Default.GetString(c);
    Response.Write(a);