现在的位置: 首页 > 综合 > 正文

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

2013年04月20日 ⁄ 综合 ⁄ 共 2366字 ⁄ 字号 评论关闭

主要实现播放路径 加密

 

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转String
		public 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;
            }
        }

 

 

抱歉!评论已关闭.