前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.Net 5中使用AES-GCM

.Net 5中使用AES-GCM

作者头像
leon公众号精选
发布2022-04-27 16:03:22
7420
发布2022-04-27 16:03:22
举报
文章被收录于专栏:架构师高级俱乐部

AES是一种对称加密算法。

GCM (Galois/Counter Mode) 指的是该对称加密采用Counter模式,并带有GMAC消息认证码。随着科学的发展,加密技术已经融入到了我们生活的方方面面,而AES更是在IT互联网领域,有着广泛的应用,配合上GCM模式,能够为数据的保密性、完整性、真实性提供全面的支持

更多信息可参阅:https://juejin.cn/post/6844904122676690951

.Net 5 AES-GCM

生成key, nonce, tag

代码语言:javascript
复制
var key = GetRandomBytes(32);
var nonce = GetRandomBytes(System.Security.Cryptography.AesGcm.NonceByteSizes.MaxSize);
var tag = GetRandomBytes(System.Security.Cryptography.AesGcm.TagByteSizes.MaxSize);

加密

代码语言:javascript
复制
var plain = Encoding.UTF8.GetBytes("Hello World!");
var cipher = new byte[plain.Length];
var aes = new System.Security.Cryptography.AesGcm(key);
aes.Encrypt(nonce, plain, cipher, tag);
var cipherBase64 = Convert.ToBase64String(cipher);
Console.WriteLine(cipherBase64);

解密

代码语言:javascript
复制
var plain2 = new byte[plain.Length];
aes.Decrypt(nonce, cipher, tag, plain2);
var text = Encoding.UTF8.GetString(plain2);
Console.WriteLine(text);

随机Key辅助方法

代码语言:javascript
复制
private static byte[] GetRandomBytes(int size)
{
    var random = new byte[size];
    var rng = new RNGCryptoServiceProvider();
    rng.GetBytes(random);
    return random;
}

完整示例:

https://github.com/ErikXu/Blogs/blob/master/ipynb/AesGcm.ipynb

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师高级俱乐部 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • .Net 5 AES-GCM
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档