zoukankan      html  css  js  c++  java
  • unity3d-解密加密数据

    利用RijndaelManaged加密解码。需要导入命名空间 using System.Security.Cryptography; 

    一个很简单的例子,最终的结果

    解密和加密类

    public class DESEncrypt
    {
    
        #region ========加密========
        /// <summary> 
        /// 加密数据 
        /// </summary> 
        /// <param name="Text">要加密的内容</param> 
        /// <param name="sKey">key,必须为32位</param> 
        /// <returns></returns> 
        public static string Encrypt(string Text, string sKey)
        {
            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(sKey);
    
            RijndaelManaged encryption = new RijndaelManaged();
    
            encryption.Key = keyArray;
    
            encryption.Mode = CipherMode.ECB;
    
            encryption.Padding = PaddingMode.PKCS7;
    
            ICryptoTransform cTransform = encryption.CreateEncryptor();
    
            byte[] _EncryptArray = UTF8Encoding.UTF8.GetBytes(Text);
    
            byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);
    
            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
    
        }
    
        #endregion
    
        #region ========解密========
        /// <summary> 
        /// 解密数据 
        /// </summary> 
        /// <param name="Text"></param> 
        /// <param name="sKey"></param> 
        /// <returns></returns> 
        public static string Decrypt(string Text, string sKey)
        {
            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(sKey);
    
            RijndaelManaged decipher = new RijndaelManaged();
    
            decipher.Key = keyArray;
    
            decipher.Mode = CipherMode.ECB;
    
            decipher.Padding = PaddingMode.PKCS7;
    
            ICryptoTransform cTransform = decipher.CreateDecryptor();
    
            byte[] _EncryptArray = Convert.FromBase64String(Text);
    
            byte[] resultArray = cTransform.TransformFinalBlock(_EncryptArray, 0, _EncryptArray.Length);
    
            return UTF8Encoding.UTF8.GetString(resultArray);
    
        }
    
        #endregion
    
    }

     编写测试代码

     1 using UnityEngine;
     2 using System.Collections;
     3 using System;
     4 using System.Security.Cryptography;
     5 using System.Text;
     6 public class da : MonoBehaviour
     7 {
     8 
     9     //需要加密的字符串
    10     string encrypt = string.Empty;
    11     //加密后的字符串
    12     string desEncrypt = string.Empty;
    13     // Use this for initialization
    14     void Start()
    15     {
    16 
    17     }
    18 
    19     // Update is called once per frame
    20     void Update()
    21     {
    22 
    23     }
    24 
    25 
    26     void OnGUI()
    27     {
    28         string key = "12345678901234567890123456789000"; //必须为32位
    29         encrypt = GUILayout.TextField(encrypt, GUILayout.MinWidth(150));
    30         GUILayout.Space(5);
    31         desEncrypt = GUILayout.TextArea(desEncrypt, GUILayout.Height(200),GUILayout.MinWidth(150));
    32 
    33         if (GUILayout.Button("加密"))
    34         {
    35             desEncrypt = DESEncrypt.Encrypt(encrypt, key);
    36         }
    37         if (GUILayout.Button("解密"))
    38         {
    39             desEncrypt = DESEncrypt.Decrypt(desEncrypt, key);
    40         }
    41     }
    42 }

     或者可以用MD5

     1  /// <summary>
     2         /// MD5加密
     3         /// </summary>
     4         /// <param name="sDataIn"></param>
     5         /// <returns></returns>
     6         public static string GetMD5(string sDataIn)
     7         {
     8             MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
     9             byte[] bytValue, bytHash;
    10             bytValue = System.Text.Encoding.UTF8.GetBytes(sDataIn + "md");
    11             bytHash = md5.ComputeHash(bytValue);
    12             md5.Clear();
    13             string sTemp = "";
    14             for (int i = 0; i < bytHash.Length; i++)
    15             {
    16                 sTemp += bytHash[i].ToString("X").PadLeft(2, '0');
    17             }
    18             return sTemp.ToLower();
    19         }

     收集的一个代码

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Text;
     4 using System.Security.Cryptography;
     5 using System.IO;
     6 namespace GetMD5
     7 {    
     8     class Program
     9     {
    10         public static string getFileHash(string filePath)
    11         {           
    12             try
    13             {
    14                 FileStream fs = new FileStream(filePath, FileMode.Open);
    15                 int len = (int)fs.Length;
    16                 byte[] data = new byte[len];
    17                 fs.Read(data, 0, len);
    18                 fs.Close();
    19                 MD5 md5 = new MD5CryptoServiceProvider();
    20                 byte[] result = md5.ComputeHash(data);
    21                 string fileMD5 = "";
    22                 foreach (byte b in result)
    23                 {
    24                     fileMD5 += Convert.ToString(b, 16);
    25                 }
    26                 return fileMD5;   
    27             }
    28             catch (FileNotFoundException e)
    29             {
    30                 Console.WriteLine(e.Message);
    31                 return "";
    32             }                                 
    33         }
    34         static void Main(string[] args)
    35         {
    36             string md5 = getFileHash("E:\Myweb\cubetest.unity3d");
    37             string b = getFileHash("E:\Myweb\testscene.unity3d");
    38             Console.WriteLine(md5);
    39             Console.WriteLine(b);
    40             Console.ReadKey();
    41             
    42         }
    43     }
    44 }
  • 相关阅读:
    MYSQL优化
    linux 基础知识 之基础系统管理2
    mysql数据库读写分离+高可用
    Varnish代理缓存服务器
    tomcat
    Memcached, Redis, MongoDB区别、特点、使用场景
    session共享
    基于docker的zabbix服务搭建
    php-fpm 启动后没有监听端口9000
    学习网站
  • 原文地址:https://www.cnblogs.com/niboy/p/4234143.html
Copyright © 2011-2022 走看看