using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Security.Cryptography; namespace AESEncoder
{
class Program
{
static void Main(string[] args)
{
var encoder = new AESEncoder("@111>111@222>222@333>333");
var a = encoder.EncryptString("abc");
var b = encoder.DecryptString(a);
} /// <summary>
/// DESEncrypt加密解密算法。
/// </summary>
public class AESEncoder
{ public AESEncoder(string key)
{
this.Key = key;
} /// <summary>
/// 对称加密解密的密钥
/// </summary>
public string Key { get; private set; } /// <summary>
/// DES加密
/// </summary>
/// <param name="encryptString"></param>
/// <returns></returns>
public string EncryptString(string data)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(this.Key);
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(data);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length);
return Convert.ToBase64String(resultArray, , resultArray.Length);
} /// <summary>
/// DES解密
/// </summary>
/// <param name="decryptString"></param>
/// <returns></returns>
public string DecryptString(string data)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(this.Key);
byte[] toEncryptArray = Convert.FromBase64String(data);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
} public bool EncryptFile(string filepath)
{
try
{
var bytes = File.ReadAllBytes(filepath);
File.WriteAllBytes(filepath, Encoding.UTF8.GetBytes(this.EncryptString(Convert.ToBase64String(bytes))));
return true;
}
catch (Exception ex)
{
Debug.Print(ex.ToString());
return false;
}
} public bool DecryptFile(string filepath)
{
try
{
var bytes = File.ReadAllBytes(filepath);
File.WriteAllBytes(filepath, Convert.FromBase64String(this.DecryptString(Encoding.UTF8.GetString(bytes))));
return true;
}
catch (Exception ex)
{
Debug.Print(ex.ToString());
return false;
}
}
}
}
}
/// <summary>
/// AES256加密解密算法。
/// </summary>
public class AESEncoder
{ public AESEncoder(string key)
{
this.Key = key;
} /// <summary>
/// 对称加密解密的密钥
/// </summary>
public string Key { get; private set; } /// <summary>
/// DES加密
/// </summary>
/// <param name="encryptString"></param>
/// <returns></returns>
public byte[] EncryptBytes(byte[] data)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(this.Key);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(data, , data.Length);
return resultArray;
} /// <summary>
/// DES解密
/// </summary>
/// <param name="decryptString"></param>
/// <returns></returns>
public byte[] DecryptBytes(byte[] data)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(this.Key);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(data, , data.Length);
return resultArray;
}
}

c# AES128 加解密算法的更多相关文章

  1. 3des加解密算法

    编号:1003时间:2016年4月1日09:51:11功能:openssl_3des加解密算法http://blog.csdn.net/alonesword/article/details/17385 ...

  2. QQ协议的TEA加解密算法

    QQ通讯协议里的加解密算法. #include <stdio.h> #include <stdlib.h> #include <memory.h> #include ...

  3. DES加解密算法Qt实现

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

  4. AES加解密算法Qt实现

    [声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外 ...

  5. C#加解密算法

    先附上源码 加密解密算法目前已经应用到我们生活中的各个方面 加密用于达到以下目的: 保密性:帮助保护用户的标识或数据不被读取. 数据完整性:帮助保护数据不被更改. 身份验证:确保数据发自特定的一方. ...

  6. AES加解密算法在Android中的应用及Android4.2以上版本调用问题

     from://http://blog.csdn.net/xinzheng_wang/article/details/9159969 AES加解密算法在Android中的应用及Android4.2以上 ...

  7. [转]RSA,DSA等加解密算法介绍

    From : http://blog.sina.com.cn/s/blog_a9303fd90101cgw4.html 1)      MD5/SHA MessageDigest是一个数据的数字指纹. ...

  8. JavaScript与C#互通的DES加解密算法

    原文地址:传送门 本文提供了一个能使JavaScript与C#互通的DES加解密算法的实现,在前台页面中用JavaScript版本的DES算法将数据加密之后,传到服务器端,在服务器端可用C#版本的DE ...

  9. 最强加密算法?AES加解密算法Matlab和Verilog实现

    目录 背景 AES加密的几种模式 基本运算 AES加密原理 Matlab实现 Verilog实现 Testbench 此本文首发于公众号[两猿社],重点讲述了AES加密算法的加密模式和原理,用MATL ...

随机推荐

  1. linux打印彩色输出

    在终端生成彩色输出,我们可以使用转义序列来实现. 每种颜色都有对应的颜色码.比如:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37 要打印彩色文 ...

  2. win32创建工具栏的自定义图标

    注意点:使用LoadImage函数加载bmp图片,这里特指BMP图片,其实LoadImage可以加载很多格式的图片 HBITMAP bitmap = (HBITMAP)LoadImage((HINST ...

  3. Python修炼之路-数据类型

    Python编程之列表 列表是一个使用一对中括号"[   ]" 括起来的有序的集合,可以通过索引访问列表元素,也可以增加和删除元素. 列表的索引:第一个元素索引为0,最后一个元素索 ...

  4. C# 判断 List 是否存在某一个字段

    foreach (var item in list_QuestionnaireSelect) { EntityQuestionnaireParticipantsReport _entityReport ...

  5. iOS画线段

    CGContextRef context = UIGraphicsGetCurrentContext(); //设置线条类型 CGContextSetLineCap(context, kCGLineC ...

  6. haproxy教程

    一.haproxy简介 HAProxy is a free, very fast and reliable solution offering high availability, load bala ...

  7. 故障检测、性能调优与Java类加载机制

    故障检测.性能调优与Java类加载机制 故障检测.性能调优 用什么工具可以查出内存泄露 (1)MerroyAnalyzer:一个功能丰富的java堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消 ...

  8. python 面向对象_1

    self #self 是相当于c++的 this指针 class Ball: def setName(self,name): self.name = name def kick(self): prin ...

  9. java总结2

    1,对象数组,必须指定了数组长度,长度是固定的 2,除了ArrayList<E>以外,类赋值给变量,只有string类拿到的是值,其他类拿到的都是类的地址值, ArrayList<E ...

  10. java+web+批量下载文件

    JavaWeb 文件下载功能 文件下载的实质就是文件拷贝,将文件从服务器端拷贝到浏览器端,所以文件下载需要IO技术将服务器端的文件读取到,然后写到response缓冲区中,然后再下载到个人客户端. 1 ...