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 = ;
rijndael.BlockSize = ;
byte[] pwdBytes = Encoding.Default.GetBytes(mkey);
byte[] keyBytes = new byte[];
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, , 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 = ;
rijndael.BlockSize = ;
byte[] encryptedData = Convert.FromBase64String(text);
byte[] pwdBytes = Encoding.Default.GetBytes(key);
byte[] keyBytes = new byte[];
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, , 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(, ));
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, , 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(, ));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.
HashPasswordForStoringInConfigFile(dkey, "MD5").Substring(, ));
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(txtBytes, , txtBytes.Length);
cs.FlushFinalBlock();
return Encoding.Default.GetString(ms.ToArray());
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
}

AES && DES加解密的更多相关文章

  1. java MD5/AES/DES加解密汇总

    package com.test.test1.util; import java.security.MessageDigest; import java.security.SecureRandom; ...

  2. android平台上AES,DES加解密及问题

    在使用java进行AES加密的时候,会用到如下方法: SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); 但是在andr ...

  3. Java拓展教程:文件DES加解密

    Java拓展教程:文件加解密 Java中的加密解密技术 加密技术根据一般可以分为对称加密技术和非对称加密技术.对称加密技术属于传统的加密技术,它的加密和解密的密钥是相同的,它的优点是:运算速度快,加密 ...

  4. Node.js的DES加解密和MD5加密

    最基本的就是经常用的md5加密算法 代码如下 var  MD5=function (data) {        var _encrymd5 = require('crypto').createHas ...

  5. Golang之AES/DES加密解密

    AES/DES加密/解密涉及4个概念:1. Block, 也叫分组, 相应加密/解密的算法. 2. BlockMode, 模式, 相应加密/解密的处理.3. InitalVectory, 初始向量4. ...

  6. 一个java的DES加解密类转换成C#

    原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...

  7. DES加解密算法Qt实现

      算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为b ...

  8. Java Des加解密方法(c#加密Java解密)

    最近我们用Java把一个用.net编写的老系统重新做了翻版,但是登录还是用.net的登录.这样就会遇到一个比较棘手的问题,我们登录用的cookie信息都是.net用des加密的,但我们不得不用Java ...

  9. DES加解密 cbc模式 的简单讲解 && C++用openssl库来实现的注意事项

    DES cbc是基于数据块加密的.数据块的长度为8字节64bit.以数据块为单位循环加密,再拼接.每个数据块加密的秘钥一样,IV向量不同.第一个数据快所需的IV向量,需要我们提供,从第二个数据块开始, ...

随机推荐

  1. C#工具帮助类

    md5帮助类 .引入库 using System.Security.Cryptography;//引用Md5转换功能 .计算字符串的Md5值 public static string GetMD5Wi ...

  2. nexus3.x启动不起来

    1.首先说两种启动命令,网上最多的是用./nexus start.这种是后台启动,看不到实时日志:./nexus run 是实时启动可以看到日志. 2.linux下解压nexus-3.6.2-01-u ...

  3. ES6学习历程(变量的解构赋值)

    一.数组的解构赋值 1.举几个例子足以理解 let [a, b, c] = [1, 2, 3]; a:1;  b:2;  c:3; let [x, , y] = [1, 2, 3];  x:1   y ...

  4. 终端打印SQL语句

    在 Django 项目的 settings.py 文件中配置: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handle ...

  5. 16.copy_to定制组合field解决cross-fields搜索弊端

    主要知识点: 在index的mapping中加copy_to字段的方法 copy_to搜索方法     用most_fields策略,去实现cross-fields搜索,有3大弊端,为了解决这三个弊端 ...

  6. 渗透实战(周二):FLUXION暴力破解WIFI登录口令

    Wi-Fi攻与防 假设我们Kali Linux 攻击机有一个无线网卡,想通过特殊手段连入名称:414的Wi-Fi网络,那以下便是特殊手段的具体过程. Wi-Fi的破解 硬件:MacBook Pro.小 ...

  7. 53. Maximum Subarray(动态规划)

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  8. 手动部署tidb(二进制包)集群

    环境准备 系统:centos7.2 用户:root 主机配置ntp时间同步 主机配置ssh互信 3节点: hostname@ip 部署组件 tidb1@10.70.249.24 PD,TiKV,TiD ...

  9. mysql-sql语句中变量的使用

    最近工作中用到mysql,发现mysql和Oracle差别挺大的,其不像Oracle中存在丰富的分析函数(开窗函数),如rank(),lag(),leaf()等,只能用变量来获取以便达到分析函数的效果 ...

  10. BZOJ——T 2097: [Usaco2010 Dec]Exercise 奶牛健美操

    http://www.lydsy.com/JudgeOnline/problem.php?id=2097 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit:  ...