用C#实现的数据加密(一) —— 对称加密算法

加密|数据|算法

用C#实现的数据加密(一) —— 对称加密算法

以下是关于对称加密算法的C#实现代码,大家可以根据需要更改不同的算法,文中以Rijndael算法为例:

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace DataCrypto
{
/// <summary>
/// 对称加密算法类
/// </summary>
public class SymmetricMethod
{

private SymmetricAlgorithm mobjCryptoService;
private string Key;
/// <summary>
/// 对称加密类的构造函数
/// </summary>
public SymmetricMethod()
{
mobjCryptoService = new RijndaelManaged();
Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
}
/// <summary>
/// 获得密钥
/// </summary>
/// <returns>密钥</returns>
private byte[] GetLegalKey()
{
string sTemp = Key;
mobjCryptoService.GenerateKey();
byte[] bytTemp = mobjCryptoService.Key;
int KeyLength = bytTemp.Length;
if (sTemp.Length > KeyLength)
sTemp = sTemp.Substring(0, KeyLength);
else if (sTemp.Length < KeyLength)
sTemp = sTemp.PadRight(KeyLength, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}
/// <summary>
/// 获得初始向量IV
/// </summary>
/// <returns>初试向量IV</returns>
private byte[] GetLegalIV()
{
string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
mobjCryptoService.GenerateIV();
byte[] bytTemp = mobjCryptoService.IV;
int IVLength = bytTemp.Length;
if (sTemp.Length > IVLength)
sTemp = sTemp.Substring(0, IVLength);
else if (sTemp.Length < IVLength)
sTemp = sTemp.PadRight(IVLength, ' ');
return ASCIIEncoding.ASCII.GetBytes(sTemp);
}
/// <summary>
/// 加密方法
/// </summary>
/// <param name="Source">待加密的串</param>
/// <returns>经过加密的串</returns>
public string Encrypto(string Source)
{
byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
MemoryStream ms = new MemoryStream();
mobjCryptoService.Key = GetLegalKey();
mobjCryptoService.IV = GetLegalIV();
ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
cs.Write(bytIn, 0, bytIn.Length);
cs.FlushFinalBlock();
ms.Close();
byte[] bytOut = ms.ToArray();
return Convert.ToBase64String(bytOut);
}
/// <summary>
/// 解密方法
/// </summary>
/// <param name="Source">待解密的串</param>
/// <returns>经过解密的串</returns>
public string Decrypto(string Source)
{
byte[] bytIn = Convert.FromBase64String(Source);
MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
mobjCryptoService.Key = GetLegalKey();
mobjCryptoService.IV = GetLegalIV();
ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
return sr.ReadToEnd();
}
}
}

时间: 2025-01-07 18:51:34

用C#实现的数据加密(一) —— 对称加密算法的相关文章

对称加密算法-AES算法(高级数据加密标准)

一.简述   DES的不安全性以及DESede算法的低效,催生了这个AES算法(advanced Encryption Standard).这个算法比DES要快,安全性高.密钥建立时间段.灵敏性好.内存需求低.在各个领域应用广泛.目前,AES通常用于移动通信系统以及一些软件的安全外壳.还有一些无线路由器中也是用AES算法构建加密协议 二.AES算法的概要说明   算法 密钥长度 密钥长度默认值 工作模式 填充方式 备注 AES 128/192/256 128 ECB/CBC/PCBC/CTR/C

对称加密算法-DES以及DESede算法

一.简述   对称加密算法就是能将数据加解密.加密的时候用密钥对数据进行加密,解密的时候使用同样的密钥对数据进行解密.   DES是美国国家标准研究所提出的算法.因为加解密的数据安全性和密钥长度成正比.des的56位的密钥已经形成安全隐患,在1998年之后就很少被采用.但是一些老旧的系统还在使用.因为这个des算法并没有被美国标准委员会公布全部算法,大家一致怀疑被留了后门.所以慢慢就被淘汰掉了.   后来针对des算法进行了改进,有了三重des算法(DESede).针对des算法的密钥长度较短以

对称加密算法-PBE算法

一.简述   PBE算法(Password Base Encryption,基于口令加密)算法是一种基于口令的加密算法.特点在于口令由用户自己掌握,采用随机数(我们这里叫做 盐)杂凑多重加密等方法保证数据的安全性.   PBE算法没有密钥的概念,把口令当做密钥了.因为密钥长短影响算法安全性,还不方便记忆,这里我们直接换成我们自己常用的口令就大大不同了,便于我们的记忆.但是单纯的口令很容易被字典法给穷举出来,所以我们这里给口令加了点"盐",这个盐和口令组合,想破解就难了. 同时我们将盐和

【&amp;amp;#9733;】RSA-什么是不对称加密算法?

不对称加密算法RSA浅析        本文主要介绍不对称加密算法中最精炼的RSA算法.我们先说结论,也就是RSA算法怎么算,然后再讲为什么.        随便选取两个不同的大素数p和q,N=p*q,r=(p-1)*(q-1).        算出一组(e,d)满足e*d≡1(mod r).        设明文x,密文y,x和y都小于N:        加密:xe ≡ y (mod N):解密:yd ≡ x (mod N).        以前也接触过RSA加密算法,感觉这个东西太神秘了,是

【&amp;#9733;】RSA-什么是不对称加密算法?

不对称加密算法RSA浅析        本文主要介绍不对称加密算法中最精炼的RSA算法.我们先说结论,也就是RSA算法怎么算,然后再讲为什么.        随便选取两个不同的大素数p和q,N=p*q,r=(p-1)*(q-1).        算出一组(e,d)满足e*d≡1(mod r).        设明文x,密文y,x和y都小于N:        加密:xe ≡ y (mod N):解密:yd ≡ x (mod N).        以前也接触过RSA加密算法,感觉这个东西太神秘了,是

【★】RSA-什么是不对称加密算法?

不对称加密算法RSA浅析        本文主要介绍不对称加密算法中最精炼的RSA算法.我们先说结论,也就是RSA算法怎么算,然后再讲为什么.        随便选取两个不同的大素数p和q,N=p*q,r=(p-1)*(q-1).        算出一组(e,d)满足e*d≡1(mod r).        设明文x,密文y,x和y都小于N:        加密:xe ≡ y (mod N):解密:yd ≡ x (mod N).        以前也接触过RSA加密算法,感觉这个东西太神秘了,是

利用DotNET密码系统之一的DES对称加密算法保证数据安全

安全|加密|数据|算法 (亿众国际-008)[原创]利用DotNET密码系统保证数据安全 ///////////////////////////////////////////////////////////////Author: stardicky ////E-mail: stardicky@hotmail.com ////QQNumber: 9531511 ////CompanyName: Ezone International ////Class: HBS-0308 ////title:

对称加密(2) 对称加密算法

经典的对称加密算法是DES算法,后来又衍生出3DES.TripleDES等增强型的DES算法.此外,.NET还提供了RC2.Rijndael等对称加密算法.下面分别详细介绍. DES加密算法 对称加密算法中最经典的算法莫过于DES加密算法.DES加密采用的是分组加密的方法,使用56位密钥加密64位明文,最后产生64位密文.DES算法的基本流程如图6-2所示. 图6-2  DES加密算法基本流程 现在对图6-2的整个流程做简要的分析.DES对64位的明文分组M进行操作,M经过一个初始置换IP置换成

对称加密算法-IDEA算法

一.简述   在寻找DES算法替代品的同时.在AES算法征集以前,IDEA作者就独辟蹊径的提出了这个算法.这个算法很强,想破解出来按照当前的计算水准需要10的13次方年.   在美国之外提出并发展,避开法律限制.这个限制被最多应用在邮件加密.电子邮件加密软件PGP使用的就是IDEA的商业版权.   java6没提供实现.Bouncy Castle提供了实现   二.算法相关配置说明   算法 密钥长度 密钥长度默认值 工作模式 填充方式 备注 IDEA 128 128 ECB PKCS5Padd