博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AES && DES加解密
阅读量:4655 次
发布时间:2019-06-09

本文共 5233 字,大约阅读时间需要 17 分钟。

MD5加密一般不可逆,只能暴力突破。所以这边记录一下一些关于字符串的加解密的两种方法,以便自己学习

AES

public class AESHelper    {        public static string AESEncrypt(string text)        {            return AESEnc(text, KeyStruct.strKey);        }        public static string AESDecrypt(string text)        {            return AESDes(text, KeyStruct.strKey);        }        //加密        private static string AESEnc(string text, string mkey)        {            using (RijndaelManaged rijndael = new RijndaelManaged())            {                rijndael.Mode = CipherMode.ECB;                rijndael.Padding = PaddingMode.PKCS7;                rijndael.KeySize = 128;                rijndael.BlockSize = 128;                byte[] pwdBytes = Encoding.Default.GetBytes(mkey);                byte[] keyBytes = new byte[16];                int len = pwdBytes.Length > keyBytes.Length ? keyBytes.Length : pwdBytes.Length;                Array.Copy(pwdBytes, keyBytes, len);                rijndael.Key = keyBytes;                using (ICryptoTransform tranform = rijndael.CreateEncryptor())                {                    byte[] txtBytes = Encoding.Default.GetBytes(text);                                     return Convert.ToBase64String(tranform.TransformFinalBlock(txtBytes, 0, txtBytes.Length));                }            }                  }        //解密        private static string AESDes(string text, string key)        {            using (RijndaelManaged rijndael = new RijndaelManaged())            {                rijndael.Mode = CipherMode.ECB;                rijndael.Padding = PaddingMode.PKCS7;                rijndael.KeySize = 128;                rijndael.BlockSize = 128;                byte[] encryptedData = Convert.FromBase64String(text);                byte[] pwdBytes = Encoding.Default.GetBytes(key);                byte[] keyBytes = new byte[16];                int len = pwdBytes.Length > keyBytes.Length ? keyBytes.Length : pwdBytes.Length;                Array.Copy(pwdBytes, keyBytes, len);                rijndael.Key = keyBytes;                using (ICryptoTransform tranform = rijndael.CreateDecryptor())                {                    var a = tranform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);                    return Encoding.Default.GetString(a);                }            }           }        private  struct KeyStruct        {            public static string strKey = "****";        }    }

 

DES

public class DesHelper    {        private static string desKey = "****";        public static string DesEncrypt(string text)        {            return DesEnc(text, desKey);        }        public static string DesDescript(string text)        {            return DesDes(text, desKey);        }        private static string DesEnc(string text, string dkey)        {            using (DESCryptoServiceProvider descry = new DESCryptoServiceProvider())            {                byte[] txtBytes = Encoding.Default.GetBytes(text);                byte[] keyBytes =ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.                    HashPasswordForStoringInConfigFile(dkey, "MD5").Substring(0, 8));                              descry.Key = keyBytes;                descry.IV = keyBytes;  //获取或设置对称算法的初始化向量,这边默认向量为key                using (MemoryStream ms = new MemoryStream())                {                    using (CryptoStream cs = new CryptoStream(ms, descry.CreateEncryptor(), CryptoStreamMode.Write))                    {                        cs.Write(txtBytes, 0, txtBytes.Length);                        cs.FlushFinalBlock();                    }                    //StringBuilder ret = new StringBuilder();                    //foreach (byte b in ms.ToArray())                    //{                    //    ret.AppendFormat("{0:X2}", b);                    //}                    return Convert.ToBase64String(ms.ToArray());                }            }        }        private static string DesDes(string text, string dkey)        {            try            {                using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())                {                    byte[] txtBytes = Convert.FromBase64String(text);                    des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.                             HashPasswordForStoringInConfigFile(dkey, "MD5").Substring(0, 8));                    des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.                          HashPasswordForStoringInConfigFile(dkey, "MD5").Substring(0, 8));                    using (MemoryStream ms = new MemoryStream())                    {                        using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))                        {                            cs.Write(txtBytes, 0, txtBytes.Length);                            cs.FlushFinalBlock();                            return Encoding.Default.GetString(ms.ToArray());                        }                    }                }            }            catch (Exception ex)            {                                throw ex;            }        }    }

 

转载于:https://www.cnblogs.com/huage-1234/p/9262085.html

你可能感兴趣的文章
Spring cloud 基础
查看>>
游戏开发Unity渲染场景光照性能优化 ShaderLOD
查看>>
java中构造方法的使用
查看>>
使用Expression动态创建lambda表达式
查看>>
MapReduce
查看>>
找工作——JVM内存管理
查看>>
【Flask】在Flask中使用logger
查看>>
Nginx安装及配置详解
查看>>
好系统重装助手教你如何让win10系统快速开机
查看>>
计算机操作系统概述
查看>>
代理模式
查看>>
Infraware推出Tizen应用生成器Polaris,可转换Android应用至Tizen平台
查看>>
luogu1345 奶牛的电信 (最小割)
查看>>
BZOJ 100题留念
查看>>
BZOJ 1649: [Usaco2006 Dec]Cow Roller Coaster( dp )
查看>>
留言板
查看>>
Jenkins + GitLab 通过 Webhook 自动触发构建爬坑记录
查看>>
MIPS汇编小贴示
查看>>
每日站立会议06
查看>>
linux开机启动
查看>>