DES 算法描述简介:
DES 是 Data Encryption Standard(数据加密标准)的缩写。它是由 IBM 公司研制的一种加密算法,
美国国家标准局于 1977 年公布把它作为非机要部门使用的数据加密标准;它是一个分组加密算法,他以
64 位为分组对数据加密。同时 DES 也是一个对称算法:加密和解密用的是同一个算法。它的密匙长度是
56 位(因为每个第 8 位都用作奇偶校验),密匙可以是任意的 56 位的数,而且可以任意时候改变.
/// <summary>
/// DES 加密
/// </summary>
/// <param name="Data">被加密的明文</param>
/// <param name="Key">密钥</param>
/// <param name="Vector">向量</param>
/// <returns>密文</returns>
public static Byte[] DESEncrypt(Byte[] Data, String Key, String Vector)
{
Byte[] bKey = new Byte[8];
Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length)), bKey, bKey.Length);
Byte[] bVector = new Byte[8];
Array.Copy(Encoding.UTF8.GetBytes(Vector.PadRight(bVector.Length)), bVector,
bVector.Length);
Byte[] Cryptograph = null; // 加密后的密文
DESCryptoServiceProvider EncryptProvider = new DESCryptoServiceProvider();
EncryptProvider.Mode = CipherMode.CBC;
EncryptProvider.Padding = PaddingMode.Zeros;
try
{
// 开辟一块内存流
using (MemoryStream Memory = new MemoryStream())
{
// 把内存流对象包装成加密流对象
using (CryptoStream Encryptor = new CryptoStream(Memory,
EncryptProvider.CreateEncryptor(bKey, bVector),
CryptoStreamMode.Write))
{
// 明文数据写入加密流
Encryptor.Write(Data, 0, Data.Length);
Encryptor.FlushFinalBlock();
Cryptograph = Memory.ToArray();
}
评论2