Unity中使用DES加密数据

来源:互联网 发布:季度数据季节调整 编辑:程序博客网 时间:2024/05/22 18:23
/// <summary>
    /// 加密    /// </summary>    /// <param name="SourceText">需要加密的原字符串</param>    /// <param name="key">秘钥</param>    /// <returns></returns>    public string Encrypt_UTF8(string SourceText,string key)    {        //实现一个加密服务的类的对象,这个类提供了DES加密算法        DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();        //因为加密内容有可能包含汉字,所以用UTF8格式,将加密的字符串保存在字节数组里        byte[] inputBytesArray = Encoding.UTF8.GetBytes(SourceText);        //设置算法的秘钥和初始化向量,需要转换为ASCII码的二进制数据        desProvider.Key = Encoding.ASCII.GetBytes(key);        desProvider.IV = Encoding.ASCII.GetBytes(key);        //实现一个内存流写入加密后的数据        MemoryStream memoryStream = new MemoryStream();        //实现一个加密转换流,其中包含要将加密后的内容写入的内存流对象,用DESCrytoServiceProvider创建的加密器,模式为写入数据        CryptoStream cryptoStream = new CryptoStream(memoryStream, desProvider.CreateEncryptor(), CryptoStreamMode.Write);        //将需要加密的字符串通过加密流写入到内存流中        cryptoStream.Write(inputBytesArray, 0, inputBytesArray.Length);        //更新内存流存储块,然后清除缓存        cryptoStream.FlushFinalBlock();        //用来将加密后的数据填充为一个字符串返回        StringBuilder builder = new StringBuilder();        byte[] byteArray = memoryStream.ToArray();        for (int i = 0; i < byteArray.Length; i++)        {            //builder.Append(byteArray[i]);            builder.AppendFormat("{0:X2}", byteArray[i]);        }        return builder.ToString();    }

解密方法

 /// <summary>    /// 解密    /// </summary>    /// <param name="DecryptText">需要解密的字符串</param>    /// <param name="sKey">秘钥</param>    /// <returns></returns>    public string DesDecrypt(string DecryptText, string sKey)    {        //实现一个加密服务的类的对象,这个类提供了DES加密算法        DESCryptoServiceProvider des = new DESCryptoServiceProvider();        //实现一个二进制数组保存将需要解密的字符转换为二进制后的数据,因为加密后的数据用16位字符保存,所以定义的大小为源字符串一半        byte[] inputByteArray = new byte[DecryptText.Length / 2];        //将解密内容转换为32位整数,然后存储在二进制数组里        for (int x = 0; x < DecryptText.Length / 2; x++)        {            int i = (Convert.ToInt32(DecryptText.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();        return System.Text.Encoding.UTF8.GetString(ms.ToArray());    }


0 0
原创粉丝点击