tnblog
首页
视频
资源
登录

.net中常用的几种加密解密

5432人阅读 2019/12/26 10:13 总访问:419695 评论:0 收藏:0 手机
分类: 其他

 

《从你的全世界路过》



我希望有个如你一般的人

我希望有个如你一般的人,如山间清爽的风,如古城温暖的光,从清晨到夜晚,从山野到书房,只要最后是你,就好。


  今天我们分享的内容是在.NET 中常用的几种加密方式。


  一、MD5加密算法    : MD5全称是message-digest algorithm 5,简单的说就是单向的加密,即是说无法根据密文推导出明文。

  MD5主要用途:

       1、对一段信息生成信息摘要,该摘要对该信息具有唯一性,可以作为数字签名。

       2、用于验证文件的有效性(是否有丢失或损坏的数据),

       3、对用户密码的加密,

       4、在哈希函数中计算散列值

 

   从上边的主要用途中我们看到,由于算法的某些不可逆特征,在加密应用上有较好的安全性。通过使用MD5加密算法,我们输入一个任意       长度的字节串,都会生成一个128位的整数。所以根据这一点MD5被广泛的用作密码加密。下面我就像大家演示一下怎样进行密码加密。


.net 中在需要引用以下命名空间


using System.Security;

using System.Security.Cryptography;


二、RSA加密算法

    在谈RSA加密算法之前,我们需要先了解下两个专业名词,对称加密和非对称加密。

    对称加密即:含有一个称为密钥的东西,在消息发送前使用密钥对消息进行加密,在对方收到消息之后,使用相同的密钥进行解密

 

非对称加密即:加密和解密使用不同的密钥的一类加密算法。这类加密算法通常有两个密钥A和B,使用密钥A加密数据得到的密文,只有密钥B可以进行解密操作(即使密钥A也无法解密),相反,使用了密钥B加密数据得到的密文,只有密钥A可以解密。这两个密钥分别称为私钥和公钥,顾名思义,私钥就是你个人保留,不能公开的密钥,而公钥则是公开给加解密操作的另一方的。根据不同用途,对数据进行加密所使用的密钥也不相同(有时用公钥加密,私钥解密;有时相反用私钥加密,公钥解密)。非对称加密的代表算法是RSA算法。


     了解了这两个名词下面来讲,RSA加密算法。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,多用于数据加密和数字签名。虽然有这么大的影响力,但是同时它也有一些弊端,它产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密,分组长度太大等。

三、DES加密    DES加密:使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。



以上是对于.net 几种加密解密的一个概念总结。下面我们分享一下怎样封装方法的代码。


  第一:在自己项目中新建一个类,封装Md5的加密方法,代码如下:

  

  1. public static string GetMD5(string mgs)
  2.         {
  3.             byte[] bys = System.Text.Encoding.Default.GetBytes(mgs);
  4.             
  5.             MD5 mdt = new MD5CryptoServiceProvider();
  6.             
  7.             byte[] jmh = mdt.ComputeHash(bys);
  8.             
  9.             string jmstr = BitConverter.ToString(jmh).Replace("-""");
  10.             
  11.             return jmstr;
  12.         }

然后自己调用方法到需要加密的地方即可使用哦。


 第二:封装DES的加密方法,代码如下:


  1.  public static string strEncryptDES(string encryptString, string encryptKey)
  2.         {
  3.  
  4.             try
  5.             {
  6.                 byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(08));
  7.                 //rgbIV与rgbKey可以不一样,这里只是为了简便,读者可以自行修改
  8.                 byte[] rgbIV = Encoding.UTF8.GetBytes(encryptKey.Substring(08));
  9.                 byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
  10.                 DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
  11.                 MemoryStream mStream = new MemoryStream();
  12.                 CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
  13.                 cStream.Write(inputByteArray, 0, inputByteArray.Length);
  14.                 cStream.FlushFinalBlock();
  15.                 return Convert.ToBase64String(mStream.ToArray());
  16.             }
  17.             catch
  18.             {
  19.                 return encryptString;
  20.             }
  21.  
  22.         }



原文链接:https://blog.csdn.net/tangjue18246068217/article/details/53185251


今天的分享就到这里了

喜欢的话,就多评论,多点赞,多收藏哦~

对了~别忘了关注我哦~




评价

net core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

cAPS.net 保存base64位格式的图片

publicvoidUpload() { //取出图片对应的base64位字符 stringimgBase=Request["imgBase"]; //c#里边的base6...

Quartz.net实例动态改变周期调度。misfire、Cron

Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大Quartz.NET:是把Quartz转成C# NuGet...

.net Windows服务发布、安装、卸载、监听脚本。服务调试

一、脚本 为方便不用每次都去写安装卸载的脚本1.安装脚本@echooff @echo开始安装【服务】 %SystemRoot%\Microsoft.NET\Fr...

c、VB.net中全角半角转换方法

///<summary> ///转全角的函数(SBCcase) ///</summary> ///<paramname="input">任意字符串...

.net mvc分部页,.net core分部页

.net分部页的三种方式第一种:@Html.Partial("_分部页")第二种:@{ Html.RenderPartial("分部页");}...

.net实现QQ邮箱发送邮件功能

1、微软已经帮我们封装好了发送邮件的类MailMessage,MailMessage类构造一些邮件信息,然后通过SmtpClient进行邮件发送。Mai...

StackExchange.Redis操作redis(net core支持)

官方git开源地址https://github.com/StackExchange/StackExchange.Redis官方文档在docs里边都是官方的文档通过nuget命令下...

windows 自带的netsh进行端口映射

使用netsh 把本地任意ip的25566端口 映射到192.168.81.234的25565端口netshinterfaceportproxyaddv4tov4listenaddress=0.0....

确保.net程序始终以管理员身份运行

usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; ...

ASP.net Timer细节处理

Timer的用法:1:本人称之为计时器,是asp.net官方的一种。用法即是计时所用 2:关于计时有很多中方式,本人学识有限,暂...

.net core 使用session

tip:net core 2.2后可以直接启用session了,不用在自己添加一次session依赖,本身就添加了使用nuget添加引用Microsoft.AspN...

通俗易懂,什么是.net?什么是.net Framework?什么是.net core?

朋友圈@蓝羽 看到一篇文章写的太详细太通俗了,搬过来细细看完,保证你对.NET有个新的认识理解原文地址:https://www.cnblo...

asp.net core2.0 依赖注入 AddTransient与AddScoped的区别

asp.net core主要提供了三种依赖注入的方式其中AddTransient与AddSingleton比较好区别AddTransient瞬时模式:每次都获取一...

asp.net主动推送百度seo

虽然可以使用百度提供的js自动推送,但是估计度娘还是希望主动推送一点。哈哈^_^,女孩子嘛大多都喜欢被动一点。publicclass...

.net core 使用 Kestrel

Kestrel介绍 Kestrel是一个基于libuv的跨平台web服务器 在.net core项目中就可以不一定要发布在iis下面了Kestrel体验可以使...
你之所以觉得时间一年比一年过得快,是因为时间对你一年比一年重要。
排名
13
文章
64
粉丝
20
评论
30
MUI框架页面间的传值指针
XingDy姐 : 不错哦
MUI框架页面间的传值指针
剑轩 : 接口的真实地址可以用xx/yy什么的代替哦,真实地址还是隐藏一下好
.NET EF 用户按钮权限
YOU : 可以,在写文章的时候,有需要写代码的地方,可以选择编辑器上的代...
.NET EF 用户按钮权限
剑轩 : 哈哈哈哈,你这个追女生的逻辑
EF三种模式解析
剑轩 : 好文采!
重要sql语句和linq,lamdba分组条件查询语句
剑轩 : 开头那句诗句写得很好哇!
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术