陪你听风

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

电脑版发表于:2019/12/26 10:13

 

《从你的全世界路过》



我希望有个如你一般的人

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


  今天我们分享的内容是在.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的加密方法,代码如下:

  

public static string GetMD5(string mgs)
        {
            byte[] bys = System.Text.Encoding.Default.GetBytes(mgs);
            
            MD5 mdt = new MD5CryptoServiceProvider();
            
            byte[] jmh = mdt.ComputeHash(bys);
            
            string jmstr = BitConverter.ToString(jmh).Replace("-", "");
            
            return jmstr;
        }

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


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


 public static string strEncryptDES(string encryptString, string encryptKey)
        {
 
            try
            {
                byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
                //rgbIV与rgbKey可以不一样,这里只是为了简便,读者可以自行修改
                byte[] rgbIV = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
                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;
            }
 
        }



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


今天的分享就到这里了

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

对了~别忘了关注我哦~




关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢