C#开发中常用的加密解密方法汇总
相信很多人在开发过程中经常会遇到需要对一些重要的信息进行加密处理,今天给大家分享我个人总结的一些加密算法:
常见的加密方式分为可逆和不可逆两种方式
可逆:rsa,aes,des等
不可逆:常见的md5,shad等
一、md5消息摘要算法
我想这是大家都常听过的算法,可能也用的比较多。那么什么是md5算法呢?md5全称是message-digest algorithm 5,简单的说就是单向的加密,也就是说无法根据密文推导出明文。
md5主要用途:
1、对一段信息生成信息摘要,该摘要对该信息具有唯一性,可以作为数字签名
2、用于验证文件的有效性(是否有丢失或损坏的数据)
3、对用户密码的加密
4、在哈希函数中计算散列值
从上边的主要用途中我们看到,由于算法的某些不可逆特征,在加密应用上有较好的安全性。通过使用md5加密算法,我们输入一个任意长度的字节串,都会生成一个128位的整数。所以根据这一点md5被广泛的用作密码加密。下面我就像大家演示一下怎样进行密码加密。
首先需要引入命名空间,先看一个比较简单的md5加密的例子:
using system.security;
using system.security.cryptography;
这里我们需要注意的是,不论是在加密的过程中,加密前要将加密字符串转为字节数组,加密后也要生成密文的字节数据,然后再转化为密文。
下面是关于md5加密的其他形式,可以根据需求编写你们自己需要的加密算法:
二、des加密
des加密算法为密码*中的对称密码*,又被称为美国数据加密标准,是1972年美国ibm公司研制的对称密码*加密算法。 明文按64位进行分组,密钥长64位,密钥事实上是56位参与des运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。
des,全称data encryption standard,是一种对称加密算法。由于其安全性比较高(有限时间内,没有一种加密方法可以说是100%安全),很可能是最广泛的密钥系统(我们公司也在用,估计你们也有在用....),唯一一种方法可以破解该算法,那就是穷举法。
此外还有aes加密算法,但是aes加密是一个新的可以用于保护电子数据的加密算法。其产生的密码是迭代对称的分组密码,代加密使用一个循环结构,在该循环中重复置换和替换输入数据。
三、rsa加密算法
在谈rsa加密算法之前,我们需要先了解下两个专业名词,对称加密和非对称加密。
对称加密即:含有一个称为密钥的东西,在消息发送前使用密钥对消息进行加密,在对方收到消息之后,使用相同的密钥进行解密
非对称加密即:加密和解密使用不同的密钥的一类加密算法。这类加密算法通常有两个密钥a和b,使用密钥a加密数据得到的密文,只有密钥b可以进行解密操作(即使密钥a也无法解密),相反,使用了密钥b加密数据得到的密文,只有密钥a可以解密。这两个密钥分别称为私钥和公钥,顾名思义,私钥就是你个人保留,不能公开的密钥,而公钥则是公开给加解密操作的另一方的。根据不同用途,对数据进行加密所使用的密钥也不相同(有时用公钥加密,私钥解密;有时相反用私钥加密,公钥解密)。非对称加密的代表算法是rsa算法。
了解了这两个名词下面来讲,rsa加密算法。rsa取名来自开发他们三者的名字。rsa是目前最有影响力的公钥加密算法,多用于数据加密和数字签名。虽然有这么大的影响力,但是同时它也有一些弊端,它产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密,分组长度太大等。
下面通过示例演示使用rsa加密、解密,引用名称空间system.security.cryptography;
四、base64编码
这个就不做过多解释了,直接上代码。
五、sha安全散列算法
sha,全称securehashalgorithm,是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。
下面贴sha各种加密算法代码:
六、aes加密算法
aes算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。
aes 使用几种不同的方法来执行排列和置换运算。 aes是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。
ok,今天关于c#常见加密算法的分享就到这里了,喜欢的盆友可以帮忙点个推荐,有什么疑问的也欢迎留言指导!!!
以上就是c#开发中常用的加密解密方法汇总的详细内容,更多关于c# 加密解密的资料请关注其它相关文章!
上一篇: c# 生成二维码的示例
下一篇: Python之数据转换