zoukankan      html  css  js  c++  java
  • Rijndael

      private static void Main(string[] args)
            {
                string ss = Encrypto("wangzhen");
                string s2 = Decrypto(ss);
            }
            private static readonly SymmetricAlgorithm mobjCryptoService = new RijndaelManaged();
            private static readonly string Key;
         
            /// <summary>
            /// 获得密钥
            /// </summary>
            /// <returns>密钥</returns>
            private static byte[] GetLegalKey()
            {
                string sTemp = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
                mobjCryptoService.GenerateKey();
                byte[] bytTemp = mobjCryptoService.Key;
                int KeyLength = bytTemp.Length;
                if (sTemp.Length > KeyLength)
                    sTemp = sTemp.Substring(0, KeyLength);
                else if (sTemp.Length < KeyLength)
                    sTemp = sTemp.PadRight(KeyLength, ' ');
                return Encoding.ASCII.GetBytes(sTemp);
            }
            /// <summary>
            /// 获得初始向量IV
            /// </summary>
            /// <returns>初试向量IV</returns>
            private static byte[] GetLegalIV()
            {
                string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
                mobjCryptoService.GenerateIV();
                byte[] bytTemp = mobjCryptoService.IV;
                int IVLength = bytTemp.Length;
                if (sTemp.Length > IVLength)
                    sTemp = sTemp.Substring(0, IVLength);
                else if (sTemp.Length < IVLength)
                    sTemp = sTemp.PadRight(IVLength, ' ');
                return Encoding.ASCII.GetBytes(sTemp);
            }
            /// <summary>
            /// 加密方法
            /// </summary>
            /// <param name="source">待加密的串</param>
            /// <returns>经过加密的串</returns>
            public static string Encrypto(string source)
            {
                byte[] bytIn = Encoding.UTF8.GetBytes(source);
                var ms = new MemoryStream();
                //mobjCryptoService.Key = GetLegalKey();
                //mobjCryptoService.IV = GetLegalIV();
                ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
                var cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
                cs.Write(bytIn, 0, bytIn.Length);
                cs.FlushFinalBlock();
                ms.Close();
                byte[] bytOut = ms.ToArray();
                return Convert.ToBase64String(bytOut);
            }
            /// <summary>
            /// 解密方法
            /// </summary>
            /// <param name="source">待解密的串</param>
            /// <returns>经过解密的串</returns>
            public static string Decrypto(string source)
            {
                byte[] bytIn = Convert.FromBase64String(source);
                var ms = new MemoryStream(bytIn, 0, bytIn.Length);
                //mobjCryptoService.Key = GetLegalKey();
                //mobjCryptoService.IV = GetLegalIV();
                ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
                var cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
                var sr = new StreamReader(cs);
                return sr.ReadToEnd();
            }
  • 相关阅读:
    execute,executeQuery,executeUpdate的区别是什么?
    JDBC访问数据的基本步骤是什么
    什么是JDBC,在上面时候会用到它
    Java 为每个原始类型提供了哪些包装类型:
    Java 为每个原始类型提供了哪些包装类型:
    JDBC访问数据库的基本步骤是什么?
    String 类的常用方法都有那些?
    == 和 equals 的区别是什么
    查询所有课程成绩小于60分的同学的学号、姓名;
    什么是JDBC的最佳实践?
  • 原文地址:https://www.cnblogs.com/kingwangzhen/p/2386929.html
Copyright © 2011-2022 走看看