AES && DES加解密
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加解密的更多相关文章
- java MD5/AES/DES加解密汇总
package com.test.test1.util; import java.security.MessageDigest; import java.security.SecureRandom; ...
- android平台上AES,DES加解密及问题
在使用java进行AES加密的时候,会用到如下方法: SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); 但是在andr ...
- Java拓展教程:文件DES加解密
Java拓展教程:文件加解密 Java中的加密解密技术 加密技术根据一般可以分为对称加密技术和非对称加密技术.对称加密技术属于传统的加密技术,它的加密和解密的密钥是相同的,它的优点是:运算速度快,加密 ...
- Node.js的DES加解密和MD5加密
最基本的就是经常用的md5加密算法 代码如下 var MD5=function (data) { var _encrymd5 = require('crypto').createHas ...
- Golang之AES/DES加密解密
AES/DES加密/解密涉及4个概念:1. Block, 也叫分组, 相应加密/解密的算法. 2. BlockMode, 模式, 相应加密/解密的处理.3. InitalVectory, 初始向量4. ...
- 一个java的DES加解密类转换成C#
原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...
- DES加解密算法Qt实现
算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为b ...
- Java Des加解密方法(c#加密Java解密)
最近我们用Java把一个用.net编写的老系统重新做了翻版,但是登录还是用.net的登录.这样就会遇到一个比较棘手的问题,我们登录用的cookie信息都是.net用des加密的,但我们不得不用Java ...
- DES加解密 cbc模式 的简单讲解 && C++用openssl库来实现的注意事项
DES cbc是基于数据块加密的.数据块的长度为8字节64bit.以数据块为单位循环加密,再拼接.每个数据块加密的秘钥一样,IV向量不同.第一个数据快所需的IV向量,需要我们提供,从第二个数据块开始, ...
随机推荐
- MATLAB学习笔记之界面基本操作
一.命令窗口 1.对于较长的命令,可以用...连接符将断开的命令连接 s=/+/+/4 ... +/+/ 注意: 连接符...与表达式之间要留一个空格: 对于单引号内的字符串必须在一行完全引起来. a ...
- $(document).ready(function(){}) 与 window.onload = function(){} 区别
$(document).ready(fucntion(){ //在页面dom结构加载完毕后执行代码, }) window.onload = function(){ //页面所有内容加载完毕后,执行代码 ...
- 使用Python的Flask框架,结合Highchart,动态渲染图表(Ajax 请求数据接口)
参考链接:https://www.highcharts.com.cn/docs/ajax 参考链接中的示例代码是使用php写的,这里改用python写. 需要注意的地方: 1.接口返回的数据格式,这个 ...
- 爬虫文件存储-2:MongoDB
1.连接MongoDB 连接 MongoDB 我们需要使用 PyMongo 库里面的 MongoClient,一般来说传入 MongoDB 的 IP 及端口即可,第一个参数为地址 host,第二个参数 ...
- PHP基础库及扩展库安装
一.安装PHP所需的lib库(基础库): 1.yum install zlib-devel libxml2-devel libjpey-devel libjpeg-turbo-devel libico ...
- Flask - 特殊装饰器 和 Flask工作结构模式(FBV, CBV)
目录 Flask - 特殊装饰器 和 Flask工作结构模式 @app.errorhandler() @app.before_request @app.after_request FBV和CBV Fl ...
- lambda表达式与委托与线程初步谈论-基于刘铁锰视频观后操作
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- java后台处理解析json字符串的两种方式
简单说一下背景 上次后端通过模拟http请求百度地图接口,得到的是一个json字符串,而我只需要其中的某个key对应的value. 当时我是通过截取字符串取的,后来觉得不太合理,今天整理出了两种处理解 ...
- How do I drop a MongoDB database, from the command line?
mongo <dbname> --eval "db.dropDatabase()" > use mydb; > db.dropDatabase(); mon ...
- noip模拟赛 同余方程组
分析:这道题一个一个枚举都能有70分...... 前60分可以用中国剩余定理搞一搞.然而并没有枚举分数高......考虑怎么省去不必要的枚举,每次跳都只跳a的倍数,这样对前面的式子没有影响,为了使得这 ...