c#实现MD5、DES、RSA加密解功能

您所在的位置:网站首页 抖音账号怎么解封 c#实现MD5、DES、RSA加密解功能

c#实现MD5、DES、RSA加密解功能

2024-07-12 23:32:14| 来源: 网络整理| 查看: 265

一、MD5不可逆加密

源码如下:

/// /// MD5不可逆加密 /// 1 防止被篡改 /// 2 防止明文存储 /// 3 防止抵赖,数字签名 /// /// 要加密的文本 /// 加密成功后密文的长度 /// 加密之后的文本 public static string MD5Encrypt(string data, EncryptEnum encryptEnum = EncryptEnum.Default) { if (string.IsNullOrEmpty(data)) return null; //创建MD5新实例 MD5 md5 = MD5.Create(); //选择UTF8编码格式=>把需要加密的文本转成二进制 byte[] bytes = Encoding.UTF8.GetBytes(data); //把二进制数据转成哈希码 byte[] hashValue = md5.ComputeHash(bytes); string result = string.Empty; int max = 0, min = 0; switch (encryptEnum) { case EncryptEnum.Default://c#系统默认加密长度就是32位 case EncryptEnum.ThirtyTwo://32位加密长度 max = 16; //max = hashValue.Length; break; case EncryptEnum.Sixteen://16位密文是32位密文的9到24位字符 max = 12; min = 4; break; } for (int i = min; i < max; i++) { result += hashValue[i].ToString("x2"); } return result; }

我在这里封装了一个可供用户选择加密长度的枚举,用来计算加密之后密文文本长度使用的,当然,这是一个可控参数,用户不输入,则默认位c#系统默认MD5加密长度32位

public enum EncryptEnum { /// /// 系统默认加密 /// Default = 0, /// /// 16位加密 /// Sixteen = 16, /// /// 三十二位加密 /// ThirtyTwo = 32 } 二、DES可逆、对称加密 DES加密必须要指定他的公开的加密Key和IV,我在代码上方定义了一个通过字符串转成的Key和IV,这个字符串大家可以随便填写。

源码如下:

/// /// DES AES Blowfish ///  对称加密算法的优点是速度快, ///  缺点是密钥管理不方便,要求共享密钥。 /// 可逆对称加密 密钥长度8 /// //二进制 key, iv private static byte[] byteKey = Encoding.ASCII.GetBytes("12345678"); private static byte[] byteIV = Encoding.ASCII.GetBytes("87654321"); /// /// DES可逆 对称加密 /// /// 要加密的文本 /// 64进制字符串 public static string DESEncrypt(string data) { //DES加密实例化 DESCryptoServiceProvider desp = new DESCryptoServiceProvider(); using (MemoryStream ms = new MemoryStream())//创建内存流 { //把数据流 => 加密流 //CreateEncryptor方法是DES官方加密算法 CryptoStream cs = new CryptoStream(ms, desp.CreateEncryptor(byteKey, byteIV), CryptoStreamMode.Write); //实例化写入流 StreamWriter sw = new StreamWriter(cs); sw.Write(data);//向流中写入需要加密的数据 sw.Flush();//关闭写入器 cs.FlushFinalBlock(); //关闭转换流 ms.Flush();//关闭内存流 return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); } } /// /// DES 可逆 对称解密 /// /// 需要解密的64进制字符串 /// 解析后的字符串 public static string DESDecrypt(string data) { //DES加密实例化 using (DESCryptoServiceProvider desp = new DESCryptoServiceProvider()) { //把64进制字符串 => 二进制流 byte[] buffer = Convert.FromBase64String(data); using (MemoryStream ms = new MemoryStream()) { //把加密流 => 数据流 //CreateDecryptor方法是DES官方解密算法 CryptoStream cs = new CryptoStream(ms, desp.CreateDecryptor(byteKey, byteIV), CryptoStreamMode.Write); cs.Write(buffer, 0, buffer.Length);//向流中写入要解析的数据 cs.FlushFinalBlock();//关闭转换流 return Encoding.UTF8.GetString(ms.ToArray()); } } } 三、RSA可逆、非对称加密 RSA加密,必须要使用xml信息的公钥和私钥才能对其进行加密解密操作,所以也在代码上方封住了一个获取公钥私钥的方法,大家可以参考以下代码。

源码如下

/** * RSA ECC * 可逆非对称加密 * 非对称加密算法的优点是密钥管理很方便,缺点是速度慢。 * */ /// /// 获取RSA加密解密的公钥和私钥 /// /// public static Dictionary GetPublicAndPrivateKey() { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); string publicKey = rsa.ToXmlString(false);//包含RSA公钥信息的字符串 string privateKey = rsa.ToXmlString(true);//包含RSA公钥和私钥信息的字符串 return new Dictionary { { publicKey, privateKey } }; } /// /// RSA 可逆 非对称加密 /// /// 要加密的文本 /// 必须是包含xml信息的加密使用的公钥 /// 64进制加密之后的字符串文本 public static string RSAEncrypt(string data, string publicKey) { //实例化RSA加密流 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(publicKey);//解析xml公钥信息 UnicodeEncoding ue = new UnicodeEncoding();//utf-16编码格式 byte[] bytes = ue.GetBytes(data);//把文本 => 二进制 //对文本二进制进行加密,false 不适用默认填充文本 byte[] resultBytes = rsa.Encrypt(bytes, false); return Convert.ToBase64String(resultBytes); } /// /// RSA 可逆 非对称解密 /// /// 要解密64进制的文本 /// 必须是包含xml信息的解密使用的私钥 /// 解析成功的文本 public static string RSADecrypt(string data, string privateKey) { //把64进制字符串转成二进制流 byte[] bytes = Convert.FromBase64String(data); //实例化RSA加密流 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(privateKey);//解析xml私钥信息 byte[] resultBytes = rsa.Decrypt(bytes, false); UnicodeEncoding ue = new UnicodeEncoding();//utf-16编码格式 return ue.GetString(resultBytes); } 四、MD5、DES、RSA,加密\解密调用

简单示例:如图,我定义了一个接口,让他在控制台打印加密解密的数据 image.png

image.png 如上图所示:跟我们预料的结果一样,加密解密非常成功。

今天的MD5、DES、RSA加密解功能到这里就分享完毕了,大家有什么更加好用的加密解密方法欢迎来评论区讨论!!!



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭