天天看点

探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言

对于数据加密和解密每次我都是从网上拷贝一份,无需有太多了解,由于在.net core中对加密和解密目前全部是统一了接口,只是做具体的实现,由于遇到过问题,所以将打算基本了解下其原理,知其然足矣,知其所以然那就达不到了,利用AES加密更加安全,上一篇园友又提出,所以借着这个机会刚好用到加密和解密,同时我也已将项目中DES加密已替换为AES,在这里介绍一下。

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。它要求区块大小必须为128位,而密钥长度则可以为128、196、256位。基于此我们来实现.NET Framework版本和.NET Core版本。

探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言

上述盐字节必须为至少8个字节,否则报错如下:

探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言

测试如下:

探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言

上述利用 RijndaelManaged 来实例化AES,最终该类继承自 SymmetricAlgorithm 对称算法类。通过我们实例化一个 Rfc2898DeriveBytes 来对密钥密钥和盐循环迭代1000次从而实现加密,同理解密反向操作。

在.NET Core中对于对称加密统一接口不再利用不同类而实现,对于非对称加密当然和对称加密接口就不同了,创建起来格外方便,不再是实例化对应的类,如下

探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言

由下可以看出直接定义了一个静态方法来创建加密

探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言

当然命名空间依然是 System.Security.Cryptography 。我们直接看实现。

探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言
探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!前言

在.NET Core中实现对称加密和非对称加密无论是实现还是创建都更加简洁,之前也并未去具体了解加密和解密相关内容,借此机会稍微了解下对应的加密所以花了一点时间。对于AES加密还没怎么具体去了解内部原理,只是参照了一点资料,以此作为备忘录,目前.NET Core仅支持AES、TripleDES、RSA。希望对在.NET Core项目中需要实现加密的童鞋提供一点帮助。接下来有时间我们继续巩固下线程基础知识,敬请期待,待我学习完毕再来更新博客和大家一起分享。

本文转自Jeffcky博客园博客,原文链接:http://www.cnblogs.com/CreateMyself/p/6771652.html,如需转载请自行联系原作者

继续阅读