前言
上一篇记录了如何在 Kestrel 中使用 HTTPS(SSL), 也是我们目前项目中实际使用到的。
数据安全往往是开发人员很容易忽略的一个部分,包括我自己。近两年业内也出现了很多因为安全问题导致了很多严重事情发生,所以安全对我们开发人员很重要,我们要对我们的代码的安全负责。
在工作中,我们常常会见到 encode,base64,sha256, rsa, hash,encryption, md5 等,一些人对他们还傻傻分不清楚,也不知道什么时候使用他们,还有一些人认为MD5就是加密算法。
在 ASP.NET Core 中,为数据保护相关提供了一批新的 API,包括加密解密机制,下面就让我们来看看吧。
目录
•加密,编码,哈希之间的区别
•数据保护(Data Protection)介绍
•ASP.NET Core 中的数据保护
•总结
编码,加密,哈希之间的区别
1、编码
编码是信息从一种形式或格式转换为另一种形式的过程,他们是可逆的。
如 url、base64、jsunicode、utf-8等等。
2、加密
加密是可逆的,类似于编码也是把数据从一种形式转换为另一种形式,它通过一个特定的加密的密匙,相对应的有解密的过程。加解密的算法有2种:对称加密算法和非对称加密算法。
对称:DES、AES、SM1、RC4 等等。
非对称:RSA、ECC、SM2 等等。
3、哈希
又叫"散列",就是把任意长度的数据转换成固定长度的“指纹”,这个过程是不可逆的。而且只要输入发生改变,输出的 hash值也会有很大不同。
它还有一个特性是相同的输入总是有相同的结果, 这种特性恰好合适用来用来保存密码。
如:MD5、SHA256, SHA512, RipeMD, WHIRLPOOL等等。
数据保护(Data Protection)介绍
在看数据保护官方文档的时候,微软的文档是这样写的,大致意思就是他们基于几点需求,要开发一套数据保护的库以便用来给受信任的客户端和不受信任的客户端来使用。这几点要求就是:
1、真实性、完整性
举了一个身份验证cookie的例子,就是服务端生成了一个包含xyz权限的token,然后会在将来的某个时间过期,这个时候就需要重新请求生成一个,怎么样来保证请求的token不是被篡改过的。
2、机密性
服务器要保证请求是受信任的,所以就需要一些包含特定操作环境的信息,比如一个路径,一个权限或者一个句柄或者其他的一些东西特定于服务器的东西,这些信息不应该透漏给不受信任的客户端,也就是说类似于私钥。
新闻热点
疑难解答
图片精选