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向量,需要我们提供,从第二个数据块开始, ...
随机推荐
- btrfs基础
btrfs文件系统简介 btrfs文件系统:技术预览版(Centos7) Btrfs(B-tree.Butter FS.Better FS),GPL授权,Orale2007提出是想用来取代Ext文 ...
- jQuery练习:表单模态框
代码:基于事件冒泡原理和事件委托 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta cha ...
- 【Codeforces 158C】Cd and pwd commands
[链接] 我是链接,点我呀:) [题意] 让你实现Shell的cd和pwd操作 [题解] 用一个list表示当前的路径 如果路径以/开头则表示需要清空当前路径重新走路 否则在原来路径的基础上继续加就可 ...
- JavaSE 学习笔记之package包(十一)
包:定义包用package关键字. 1:对类文件进行分类管理. 2:给类文件提供多层名称空间. 如果生成的包不在当前目录下,需要最好执行classpath,将包所在父目录定义到classpath变量中 ...
- 洛谷——P1034 矩形覆盖
https://www.luogu.org/problem/show?pid=1034 题目描述 在平面上有 n 个点(n <= 50),每个点用一对整数坐标表示.例如:当 n=4 时,4个点的 ...
- MySQL:Useful Commands
MySQL Useful Commands Start/Stop/Restart MySQL On Linux start/stop/restart from the command line: /e ...
- T470 Win10下触摸板手势
T470 Win10下触摸板手势 学习了:https://forum.51nb.com/thread-1742490-1-1.html 三指横向竟然是alt+tab 学习了:http://www.xi ...
- Linux内核剖析 之 进程简单介绍
1.概念 1.1 什么是进程? 进程是程序运行的一个实例.能够看作充分描写叙述程序已经运行到何种程度的数据结构的汇集. 从内核观点看.进程的目的就是担当分配系统资源(CPU时间,内存 ...
- oracle中使用impdp数据泵导入数据提示“ORA-31684:对象类型已经存在”错误的解决
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47448751 本文出自[我是干勾鱼的博客] oracle中使用impdp数据泵导 ...
- Java基础:String不可变性和final修饰
转载请注明出处: jiq•钦's technical Blog - 季义钦 String的不可变性 Java规定String是不可变的(immutable).事实上这个不可变具备两层含义: 1 内容不 ...