asp.net(C#) 与 flash 传递参数DES加密解密

来源:互联网 发布:linux lvm管理 编辑:程序博客网 时间:2024/04/29 03:14

主要实现播放路径 加密

 

AS3.0

 import com.hurlant.crypto.symmetric.CBCMode;
 import com.hurlant.crypto.symmetric.DESKey;

//String转ByteArray函数public function convertStringToByteArray(str:String):ByteArray{var bytes:ByteArray;if (str){bytes=new ByteArray();bytes.writeUTFBytes(str);}return bytes;}//ByteArray转Stringpublic function convertByteArrayToString(bytes:ByteArray):String{var str:String;if (bytes){bytes.position = 0;str = bytes.readUTFBytes(bytes.length);}return str;}var strkey:String = 'aliketen';var striv:String = 'startrun';var key:ByteArray = new ByteArray();key.writeUTFBytes(strkey);var iv:ByteArray= new ByteArray();iv.writeUTFBytes(striv);var des:DESKey = new DESKey(key);var cbc:CBCMode = new CBCMode(des);cbc.IV = iv;var AByteArray:ByteArray = convertStringToByteArray("/upload/test.flv");cbc.encrypt(AByteArray);var pathA:String = Base64.encodeByteArray(AByteArray);trace("路径加密: "+pathA);var BByteArray:ByteArray = Base64.decodeToByteArray("EyZUZnQXeuAVRsL7FsYzB23tLUgcN9NT");cbc.decrypt(BByteArray);var pathB:String = convertByteArrayToString(BByteArray);trace("路径解密: "+ pathB);


c#

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;

        /// <summary>        /// 标准的DES加密        /// </summary>        public static string EncryptString(string source, string key ,string iv)        {            try            {                DESCryptoServiceProvider des = new DESCryptoServiceProvider();                Byte[] sourcebyte = Encoding.ASCII.GetBytes(source);                Byte[] keybyte = Encoding.ASCII.GetBytes(key);                Byte[] ivbyte = Encoding.ASCII.GetBytes(iv);                MemoryStream ms = new MemoryStream();                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(keybyte, ivbyte), CryptoStreamMode.Write);                cs.Write(sourcebyte, 0, sourcebyte.Length);                cs.FlushFinalBlock();                return Convert.ToBase64String(ms.ToArray());            }            catch (Exception ex)            {                return ex.Message;            }        }        /// <summary>        /// 标准的DES解密        /// </summary>        public static string DecryptString(string source, string key, string iv)        {            Byte[] sourcebyte = new byte[source.Length];            try            {                DESCryptoServiceProvider des = new DESCryptoServiceProvider();                sourcebyte = Convert.FromBase64String(source);                Byte[] keybyte = Encoding.ASCII.GetBytes(key);                Byte[] ivbyte = Encoding.ASCII.GetBytes(iv);                MemoryStream ms = new MemoryStream();                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(keybyte, ivbyte), CryptoStreamMode.Write);                cs.Write(sourcebyte, 0, sourcebyte.Length);                cs.FlushFinalBlock();                System.Text.Encoding encoding = System.Text.Encoding.UTF8;                return encoding.GetString(ms.ToArray());            }            catch (Exception ex)            {                return ex.Message;            }        }