当前位置:首页 > 软件开放 > 正文内容

代码实现文件加密方法(代码加密是什么意思)

软件开放8个月前 (02-25)319

程序世界里的一切都是围绕信息做的处理,信息的传输安全尤为重要.jwt作为一个可用作分布式的web Token解决方案,就是基于信息的加密解密做的,所以要从根本上理解jwt,那加密解密是绕不开的一个话题.

在密码学中, 加密(英语:Encryption)是将明文信息改变为难以读取的密文内容,使之不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。理想情况下,只有经授权的人员能够读取密文所要传达的信息。加密本身并不能防止信息传输被截取,但加密能防止截取者理解其内容。因为种种技术原因,加密方法通常使用一个通过算法生成的伪随机密钥。虽然任何加密后的消息都可能被破解,但对于一个良好的加密算法而言,破解需要相当多的技术和算力。授权读取信息的人可以轻松通过发信人所提供的密钥解密信息,但未经授权的人员则不行。密码学历史中有众多加密方法;早期的加密方法常用于军事通讯。从此开始,现代计算中也出现了众多加密技术,并且加密在现代计算中也变得越来越常见。[1]现代的加密方式通常使用公钥或对称密钥。现代加密技术依赖现代计算机在破解密钥上并不高效的事实来保证其安全性。

--维基百科

--维基百科

从维基百科的描述可知加密实际上是通过一系列计算将人类可以理解的文字转换成人类无法直接理解的内容,解密就是将加密后的内容再还原回去的过程,理论上来说不存在无法破解的密文.

2.分类:

对称密钥加密

在对称密钥加密方案中,加密和解密密钥是相同的。通信方必须具有相同的密钥才能实现安全通信。对称密钥的一个典型例子:德国军方的恩尼格玛密码机。这种密码机每天都有密钥设置。当盟军弄清楚机器如何工作时,他们能够在发现给定日期传输的加密密钥后立即解密消息中编码的信息。

公钥加密[俗称 :非对称加密]

在公钥加密(即公开密钥加密)方案中,发布加密密钥供任何人使用和加密消息。但是,只有接收方才能访问能够读取消息的解密密钥。公钥加密最早是在1973年的一份秘密文件中描述的[3]; 之前所有加密方案都是对称密钥加密(也称为私钥)。

3.在.net中的实现

所有加密相关的都在 System.Security.Cryptography类库下,本文所有代码都需要引用System.Security.Cryptography

1.对称密钥加密

缺点加密解密双方的密钥是相同的,密钥传输是一个非常大的问题,唯一的密钥泄漏后,就不再安全,相对来说Aes加密计算更加复杂一些,被穷举的可能性更低,本文在对称密钥加密中只介绍DES和Aes两种

DES.Create方法创建的DES对象会有一个默认的Key,在自己的项目中使用的时候,这个公钥信息要保存好,确保加解密都使用相同的密钥进行即可. 所有加密类都是基于byte[]做的,所以在做此类封装的时候,如果是针对字符串做加密,一定要统一字符编码,加密用Utf8,解密也用Utf8.

DES实现加解密,密钥要求是 byte[8]如下:

AES是由DES发展而来它比DES多了一个叫IV向量的东西,密钥从原先的8位提升到了 32位,IV向量必须是 16位的.具体原理可以去翻文档,同样的Aes.Create也会默认有一个IV和Key.

对称密钥加密在编码中容易出错的地方就在密钥的设置的时候,也许密钥长度还有其他可能或者组合,不去深究了.

2. 公钥加密(非对称加密)

展开全文

相对于对称密钥加密,公钥加密是一种全新的密码方案,该方案中表示密钥的有两个一个私钥一个公钥,通过公钥加密,只能通过私钥进行解密,相比对称密钥加密,公钥加密不需要考虑密钥传输的问题,所以也就不存在密钥泄漏的问题,在微软文档中有明确提示,不应在任何情况下以明文形式保存私钥,建议的方案是将私钥保存到本机的私钥管理器中,不过为了写出下边的代码,我决定不接受他的建议

RSA.Create 同样会生成默认的公钥和私钥,想让别人使用自己颁发的公钥,用这个生成就行了,

stringtest = "你好开发者"; byte[] encryptedSymmetricKey = rsa.Encrypt(Encoding.UTF8.GetBytes(test), RSAEncryptionPadding.Pkcs1); Console.WriteLine( $"加密后的数据: {Convert.ToBase64String(encryptedSymmetricKey)}" );

/*解密*/varrasDes = RSA.Create; //导入私钥解密rasDes.ImportRSAPrivateKey(Convert.FromBase64String(prikey), outintbytesRead2); vardes = rasDes.Decrypt(encryptedSymmetricKey, RSAEncryptionPadding.Pkcs1); Console.WriteLine( $"解密后的数据: {Encoding.UTF8.GetString(des)}" );

可以看到确实如描述一般,公钥加密后就能通过私钥解密了.

代码实现文件加密方法(代码加密是什么意思)

3. Hash摘要算法

hash摘要算法不能算到加密解密中,因为基于它的计算是不可逆的,在一定数据范围[]内不重复,但不保证不一样的两个明文不会被计算为一个结果.所以在加密解密家族群里,它是妥妥的灭绝师太,渣男,只管加密不管解.,一个比较重要的特点就是 通过摘要算法计算可以将不同长度的数据计算为一个固定位长度的byte数组.一般用于保存密码,等永远没有查看需求的地方.就算拿到加密串你也拿它没辙.最常见的就是MD5,其实还有好多,好在.net已经将这些常用的都做了封装.代码如下:

扫描二维码推送至手机访问。

版权声明:本文由飞速云SEO网络优化推广发布,如需转载请注明出处。

本文链接:http://zspsrg.cn/post/91423.html

分享给朋友:

“代码实现文件加密方法(代码加密是什么意思)” 的相关文章

易语言反编译工具(易语言反编译器)

易语言反编译工具(易语言反编译器)

本篇文章给大家谈谈易语言反编译工具,以及易语言反编译器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、易语言怎么将一个文件写入exe文件(文件是易语言编译的)里且写完后exe文件可以继续运行 2、怎样把DLL反编译成易语言源码 3、.net,java都能被反编译...

html访问人数统计代码(网站访问人数统计代码)

html访问人数统计代码(网站访问人数统计代码)

今天给各位分享html访问人数统计代码的知识,其中也会对网站访问人数统计代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、不用后台数据库可不可以统计网站日访问量?asp代码怎么写? 2、如何在静态网页中统计并显示访问数和在线人数 3、编写一个网页,...

vivo怎么改软件名(vivo手机怎么改软件名)

vivo怎么改软件名(vivo手机怎么改软件名)

今天给各位分享vivo怎么改软件名的知识,其中也会对vivo手机怎么改软件名进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、vivo手机怎么更改桌面图标名称 2、怎么修改软件名字? 3、vivo手机可以更改软件图标? vivo手机怎么更改桌面图标名...

php开源论坛(php 论坛系统)

php开源论坛(php 论坛系统)

今天给各位分享php开源论坛的知识,其中也会对php 论坛系统进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、phpwind是什么 2、请问phpwind免费的开源论坛系统有没有办法插入一个免费的会员聊天系统?请问怎么插入?用哪个系统合适? 3、怎么...

外卖平台店铺装修(外卖平台店铺装修风格)

外卖平台店铺装修(外卖平台店铺装修风格)

今天给各位分享外卖平台店铺装修的知识,其中也会对外卖平台店铺装修风格进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、外卖店怎么才能做起来? 2、店铺装修饿了么商家怎么关闭 3、如何把外卖店铺设计得更好? 4、外卖平台店铺装修怎样设置动态店招...

做一个微信小程序需要多少钱?(做一个微信小程序需要多少钱人民币)

做一个微信小程序需要多少钱?(做一个微信小程序需要多少钱人民币)

今天给各位分享做一个微信小程序需要多少钱?的知识,其中也会对做一个微信小程序需要多少钱人民币进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、做一个微信小程序要多少钱? 2、开发一个微信小程序一般得需要多少钱? 3、开发一个微信小程序需要多少钱?...