关于DES对称加解密算法介绍:
https://mp.csdn.net/console/editor/html/104846925
题目描述
参考相关文献,设计一个DES对称加密算法。并编写一个控制台应用予以验证。密钥设定为:@1234567。
class Program{
//验证DES加密算法
static void Main(string[] args){
Console.WriteLine(Class1.ECP("absg123@&!"));
}
}
public class Class1 {
//下面ECP方法功能为采用对称加密算法
//该算法原理请大家百度
const string KEY_64 = "@1234567";
const string IV_64 = "@1234567";
public static string ECP(string data) {
//这里编写DES对称加密算法代码
}
输入
一个字符串
输出
加密后的字符串
样例输入
123456
样例输出
czgzz5i20Rw=
using System;
using System.Security.Cryptography;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
using System.IO;
namespace lianxi
{
class Program
{
//验证DES加密算法
static void Main(string[] args)
{
string s = Console.ReadLine();
Console.WriteLine(Class1.ECP(s));
Console.WriteLine(Class1.DECP(Class1.ECP(s)));
Console.ReadKey();
}
}
public class Class1
{
//下面ECP方法功能为采用对称加密算法
//该算法原理请大家百度
const string KEY_64B = "@1234567";
const string IV_64B = "@1234567";
public static string ECP(string data) //加密算法
{
try
{
if (string.IsNullOrEmpty(data)) return data;
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64B);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64B);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey,byIV), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
catch (Exception ex)
{
throw ex;
}
}
public static string DECP(string data) //解密算法
{
try
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64B);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64B);
byte[] byEnc = Convert.FromBase64String(data);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}
catch (Exception ex)
{
string s = ex.Message;
throw ex;
}
}
}
}