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. 洛谷——P2574 XOR的艺术

    P2574 XOR的艺术 很久之前就想挑战一下这道题了,线段树下传标记的入门题,跟区间加法下传标记类似. #include<bits/stdc++.h> #define N 1000005 ...

  3. CF17E Palisection (回文自动机+DP)

    题目传送门 题目大意:给你一个字符串,让你求出有多少对相交的回文子串 啊啊啊啊降智了,我怎么又忘了正难则反! 求相交会很难搞.把问题转化成求互不相交的回文子串再减一下就行了 先利用$PAM$求出以每个 ...

  4. discourse论坛迁移

    在源设备的操作备份数据文件tar -czvf discoursefile716.tar.gz /var/discourse然后把此discoursefile716.tar.gz文件传到需要迁移的设备上 ...

  5. odoo widget 标签介绍

    widget="statusbar" 头部状态条标签 widget="email" 电子邮件地址标签 widget="selection" ...

  6. 第十六节:pandas之日期时间

    Pandas日期功能扩展了时间序列,在财务数据分析中起主要作用.

  7. springcloud(三):Eureka服务端

    一. 因为使用一个注册中心服务器端,n个客户端:n个生产者客户端.n消费者客户端....,所有的客户端最好的方式就是通过对象传递参数,因此需要创建一个公共组件项目,为n个客户端传值提供方便 二.创建公 ...

  8. “从客户端(content="XXXX")中检测到有潜在危险的 Request.Form值” 解决方案

    解决方案一: 在.aspx文件头中加: <%@Page validateRequest="false" %> 解决方案二: 修改web.config文件: <co ...

  9. jquery源码分析(七)——事件模块 event(二)

    上一章节探讨了事件的一些概念,接下来看下jQuery的事件模块. jQuery对事件的绑定分别有几个API:.bind()/.live()/.delegate()/.on()/click(), 不管是 ...

  10. OpenStack命令行工具与API

    Openstack命令行工具 我们推荐Openstack命令行工具和Openstack的Dashboard两者结合使用.一些用户由于使用过其他云技术背景的,可能会使用EC2兼容的API,相对于我们需要 ...