问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c# 做一个DES算法加密解密的窗体

发布网友 发布时间:2022-05-06 13:12

我来回答

3个回答

热心网友 时间:2022-06-30 16:51

C#有专门的类,直接调用就可以了
//类名:EcanSecurity
//作用:加密解密
//作者:刘典武
//时间:2010-12-01

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

namespace Ecan
{
public class EcanSecurity
{
/*MD5是message-digest algorithm 5(信息-摘要算法)的缩写,
* 被广泛用于加密和解密技术上,它可以说是文件的“数字指纹”。
* 任何一个文件,无论是可执行程序、图像文件、临时文件或者其他任何类型的文件,
* 也不管它体积多大,都有且只有一个独一无二的MD5信息值,并且如果这个文件被修改过,
* 它的MD5值也将随之改变。因此,我们可以通过对比同一文件的MD5值,
* 来校验这个文件是否被“篡改”过。*/

/// <summary>
/// MD5加密函数
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns>加密后的字符串</returns>
///
public string md5_Encode(string str)
{
MD5 m = new MD5CryptoServiceProvider();
byte[] data = Encoding.Default.GetBytes(str);
byte[] result = m.ComputeHash(data);
string ret1 = "";
try
{
for (int j = 0; j < result.Length; j++)
{
ret1 += result[j].ToString("x").PadLeft(2, '0');
}
return ret1;
}
catch
{
return str;
}
}

/// <summary>
/// 简单加密函数
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns>返回加密后的字符串</returns>
///
public string simple_Encode(string str)
{
string s = "";
try
{
for (int i = 0; i < str.Length; i++)
{
s += (char)(str[i] + 10 - 1 * 2);
}
return s;
}
catch
{
return str;
}
}

/// <summary>
/// 简单解密函数
/// </summary>
/// <param name="str">要解密的字符串</param>
/// <returns>返回解密后的字符串</returns>
///
public string simple_Decode(string str)
{
string s = "";
try
{
for (int i = 0; i < str.Length; i++)
{
s += (char)(str[i] - 10 + 1 * 2);
}
return s;
}
catch
{
return str;
}
}

//默认密钥向量
private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };

/// <summary>
/// 对称加密法加密函数
/// </summary>
/// <param name="encryptString">待加密的字符串</param>
/// <param name="encryptKey">加密密钥,要求为8位</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>

public string symmetry_Encode(string encryptString, string encryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
byte[] rgbIV = Keys;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
return encryptString;
}
}

/// <summary>
/// 对称加密法解密函数
/// </summary>
/// <param name="decryptString">待解密的字符串</param>
/// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>

public string symmetry_Decode(string decryptString, string decryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
byte[] rgbIV = Keys;
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return decryptString;
}
}
}
}

热心网友 时间:2022-06-30 16:51

//加密方法.
        private string DESEncrypt(string strInput, string strKey) {
            try {
                byte[] bytesData = Encoding.UTF8.GetBytes(strInput); //加密明文.
                byte[] bytesVector = keysVector;    //加密向量.
                byte[] bytesKey = Encoding.UTF8.GetBytes(strKey);    //密匙.
                DESCryptoServiceProvider encoder = new DESCryptoServiceProvider();
                //用using可以确保流的关闭.
                using(MemoryStream mStream = new MemoryStream()) {
                    CryptoStream cStream = new CryptoStream(mStream, encoder.CreateEncryptor(bytesKey, bytesVector), CryptoStreamMode.Write);
                    cStream.Write(bytesData, 0, bytesData.Length);
                    cStream.FlushFinalBlock();
                    return Convert.ToBase64String(mStream.ToArray());
                    //Converts an array of 8-bit unsigned integers to its equivalent string representation that is encoded with base-64 digits.
                }
            }
            catch(System.Exception ex) {
                return ex.Message;
            }
        }

        //解密方法.
        private string DESDecrypt(string strInput, string strKey) {
            try {
                byte[] bytesData = Convert.FromBase64String(strInput);  //加密了的字符串.
                // Converts the specified string, which encodes binary data as base-64 digits, to an equivalent 8-bit unsigned integer array.
                byte[] bytesKey = Encoding.UTF8.GetBytes(strKey);
                byte[] bytesVector = keysVector;    //加密向量.
                DESCryptoServiceProvider decoder = new DESCryptoServiceProvider();
                using(MemoryStream mStream = new MemoryStream()) {
                    CryptoStream cStream = new CryptoStream(mStream, decoder.CreateDecryptor(bytesKey, bytesVector), CryptoStreamMode.Write);
                    cStream.Write(bytesData, 0, bytesData.Length);
                    cStream.FlushFinalBlock();
                    return Encoding.UTF8.GetString(mStream.ToArray());
                    //When overridden in a derived class, decodes all the bytes in the specified byte array into a string.
                }
            }
            catch(System.Exception ex) {
                return ex.Message;
            }
        }

DES加密解密不难..

热心网友 时间:2022-06-30 16:52

百度一搜一大堆的东西 你们这些人怎么就这么懒 连复制粘贴都不愿意
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
脚崴了挂什么科、急急急 linux 解压缩工具--tar命令 生日祝福语闺蜜 简短独特暖心 QQ有哪些隐藏的图标??他们分别是什么??怎么样点亮?? QQ业务的各种图标怎么点亮? qq怎么点亮图标和名字 诗中书万象=求下联 大爱如山藏万象下联 中国电子展:电位器和可调电阻的区别是什么?这四点很明显 电位器的接线方法是什么 电位器的工作原理如何 C++里的des加解密,用C#实现。 c#的这段des加密,用C怎么才能实现? 当待加密明文长度为任意长时,如何使用DES算法来进行加密呢 C#加密后,如何解密 C# des加密,密钥可以不是8位? 我申请的中信银行信用卡今天收到说正在审批 然后在同一时间网上察看了下申请进度 说评分不够 C# DES解密报错:不正确的数据。 中信银行信用卡审批进度问题 C#代码解释! java 解密 c# DESCryptoServiceProvider 问题 C#DESCryptoServiceProvide类解密问题!!! 办了中信银行信用卡,今天查了很多次办卡进度结果最后一次没有通过是什么原因? 我申请中信银行信用卡才5天,今天刚征信了,但我一上网查进度,写着我的申请已获批准,请问有这么`快吗 办了中信银行信用卡,我今天查了很多次办卡进度结果最后一次没有通过是什么原因? 炫舞现在有什么活动 同城情人网我交了200块钱,但还是普通会员,怎么激活vip啊?是自动激活吗? 玫瑰情人在哪? 玫瑰情人换新地址了吗 最近喜欢上了花样跳绳,听说大庆有花样跳绳的,具体地点在哪呀? 跳绳的历史? 我要写小学六年级的作文名字叫《跳绳史话》 c# DES 动态KEY 如何能生成静态 或者设置静态的KEY ?高手指点! C#实现DES加密时无法取到完整的64bit明文块 C# DES加密解密问题 Encrypt (是否缺少 using 指令或程序集引用?) 秦兵马俑的内容? 灵异咒的剧情简介 恐怖片灵异咒的意思 灵异咒中的故事是不是真的啊? 死魂曲电影结局是什么意思啊 求好看的恐怖片!一定要够恐怖… 恐怖片不好看,推荐经典的 灵异咒是真的吗 请问。我的手机版优酷会员怎么取消自动续费,我用登的优酷为什 恐怖片,记得情节,不记得名字 如何看待美国的悬念惊悚片及其与社会问题的关系 武篆拔中 的拼音是什么 期于必拔中的于是什么意思 西游记中把孙悟空投入大金拔中的是哪一节? 求清晰的精巧的淡雅的桌面壁纸 新版微信如何修改?