WebEnh

.net7 mvc jquery bootstrap json 学习中 第一次学PHP,正在研究中。自学进行时... ... 我的博客 https://enhweb.github.io/ 不错的皮肤:darkgreentrip,iMetro_HD
随笔 - 1079, 文章 - 1, 评论 - 75, 阅读 - 174万
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

.NET Core 常用加密和Hash工具NETCore.Encrypt

Posted on   WebEnh  阅读(507)  评论(0编辑  收藏  举报

前言

 在日常开发过程中,不可避免的涉及到数据加密解密(Hash)操作,所以就有想法开发通用工具,NETCore.Encrypt就诞生了。目前NETCore.Encrypt只支持.NET Core ,工具包含了AES,DES,RSA加密解密,MD5,SHA*,HMAC*等常用Hash操作。

项目地址

https://github.com/myloveCc/NETCore.Encrypt

通过Nuget安装

Install-Package NETCore.Encrypt -Version 2.0.6

AES 操作

创建AES 秘钥

1
2
3
4
var aseKey = EncryptProvider.CreateAesKey();
 
var key = aesKey.Key;
var iv = aesKey.IV;

 AES 加密

1
2
3
var srcString = "aes encrypt";
//不带加密向量
var encrypted = EncryptProvider.AESEncrypt(srcString, key);

 

1
2
3
var srcString = "aes encrypt";
//带加密向量
var encrypted = EncryptProvider.AESEncrypt(srcString, key, iv);

 

1
2
3
4
//对byte[] 进行aes加密(version 2.0.6)
var srcBytes = new bytes[]{xxxx};
//带加密向量
var encryptedBytes = EncryptProvider.AESEncrypt(srcBytes , key, iv);

  

AES 解密

1
2
3
var encryptedStr = "xxxx";
//不带加密向量(与加密方式对应)
var decrypted = EncryptProvider.AESDecrypt(encryptedStr, key);

  

1
2
3
var encryptedStr = "xxxx";
//带加密向量
var decrypted = EncryptProvider.AESDecrypt(encryptedStr, key, iv);

 

1
2
3
4
//对byte[] 进行aes解密(version 2.0.6)
var encryptedBytes = new bytes[]{xxxx};
//带加密向量
var encryptedBytes = EncryptProvider.AESDecrypt(encryptedBytes , key, iv);

  

DES 操作

创建DES 秘钥

1
2
//秘钥长度为24
var desKey = EncryptProvider.CreateDesKey();

DES加密

1
2
var srcString = "des encrypt";
var encrypted = EncryptProvider.DESEncrypt(srcString, key);

 

1
2
3
//对byte[] 进行des加密(version 2.0.6)
var srcBytes = new bytes[]{xxxx};
var encryptedBytes = EncryptProvider.DESEncrypt(srcBytes , key);

  

DES解密

1
2
var encryptedStr = "xxxx";
var decrypted = EncryptProvider.DESDecrypt(encryptedStr, key); 

 

1
2
3
//对byte[] 进行des解密(version 2.0.6)
var encryptedBytes = new bytes[]{xxxx};
var decryptedBytes = EncryptProvider.DESDecrypt(decryptedBytes , key)

  

RSA 操作

 RSA秘钥长度枚举 

1
2
3
4
5
6
public enum RsaSize
{
    R2048=2048,
    R3072=3072,
    R4096=4096
}

 创建RSA秘钥

1
2
3
4
5
6
7
8
var rsaKey = EncryptProvider.CreateRsaKey();    //default is 2048
 
// var rsaKey = EncryptProvider.CreateRsaKey(RsaSize.R3072);
 
var publicKey = rsaKey.PublicKey;
var privateKey = rsaKey.PrivateKey;
var exponent = rsaKey.Exponent;
var modulus = rsaKey.Modulus;

 RSA加密

1
2
3
4
5
6
7
var publicKey = rsaKey.PublicKey;
var srcString = "rsa encrypt";
 
var encrypted = EncryptProvider.RSAEncrypt(publicKey, srcString);
 
//on mac/linux at version 2.0.5
var encrypted = EncryptProvider.RSAEncrypt(publicKey, srcString, RSAEncryptionPadding.Pkcs1);

 RSA解密

1
2
3
4
5
6
var privateKey = rsaKey.PrivateKey;
var encryptedStr = "xxxx";
var decrypted = EncryptProvider.RSADecrypt(privateKey, encryptedStr);
 
//on mac/linux at version 2.0.5
var decrypted = EncryptProvider.RSADecrypt(privateKey, encryptedStr, RSAEncryptionPadding.Pkcs1);

通过RSA秘钥创建RSA

1
2
var privateKey = rsaKey.PrivateKey;
RSA rsa = EncryptProvider.RSAFromString(privateKey);

HASH 操作

 MD5

1
2
var srcString = "Md5 hash";
var hashed = EncryptProvider.Md5(srcString);

 SHA

1
2
3
4
5
6
7
8
9
var srcString = "sha hash";   
//SHA1
var hashed = EncryptProvider.Sha1(srcString);
//SHA256
var hashed = EncryptProvider.Sha256(srcString);
//SHA384
var hashed = EncryptProvider.Sha384(srcString);
//SHA512
var hashed = EncryptProvider.Sha512(srcString);

 HMAC

1
2
3
4
5
6
7
8
9
10
11
12
13
var key="xxx";
var srcString = "hmac hash";    
 
//MD5
var hashed = EncryptProvider.HMACMD5(srcString,key);
//HMACSHA1
var hashed = EncryptProvider.HMACSHA1(srcString,key);
//HMACSHA256
var hashed = EncryptProvider.HMACSHA256(srcString,key);
//HMACSHA384
var hashed = EncryptProvider.HMACSHA384(srcString,key);
//HMACSHA512
var hashed = EncryptProvider.HMACSHA512(srcString,key);

BASE64 操作

Base64加密

1
2
3
4
5
var srcString = "base64 string";   
var hashed = EncryptProvider.Base64Encrypt(srcString);   //default encoding is UTF-8
 
//Encoding.ASCII
var hashed = EncryptProvider.Base64Encrypt(srcString,Encoding.ASCII);   

Base64解密

1
2
3
4
5
var encryptedStr = "xxxxx";   
var strValue = EncryptProvider.Base64Decrypt(encryptedStr);   //default encoding is UTF-8
 
//Encoding.ASCII(需要与加密编码对应)
var strValue = EncryptProvider.Base64Decrypt(encryptedStr,Encoding.ASCII);

EncryptExtensions扩展

引用命名空间

1
using NETCore.Encrypt.Extensions; 

MD5

1
var hashed="some string".MD5();

SHA

1
var hashed="some string".SHA1();
1
var hashed="some string".SHA256();
1
var hashed="some string".SHA384();
1
var hashed="some string".SHA512();

HMAC

1
var key="xxx";
1
var hashed="some string".HMACMD5(key);
1
var hashed="some string".HMACSHA1(key);
1
var hashed="some string".HMACSHA256(key);
1
var hashed="some string".HMACSHA384(key);
1
var hashed="some string".HMACSHA512(key);

Make .NET Great Again

很简单的一个工具,如果大家有新的需求,可以提issue,你也可以参与到项目中,让这个工具更加完善,希望对大家有帮助。 

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-12-21 设置 ASP.NET Core Web API 中响应数据的格式 AddNewtonsoftJson 使用NewtonsoftJson替换掉默认的System.Text.Json序列化组件
2018-12-21 nginx 常见正则匹配符号表示
2018-12-21 Nginx if 条件判断
2016-12-21 【Bootstrap-插件使用】Jcrop+fileinput组合实现头像上传功能
2016-12-21 一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统
2016-12-21 ASP.NET MVC 3 技术(九) 301永久重定向不带www域名到带www的域名
2016-12-21 ASP.NET MVC 3 网站优化总结(三)Specify Vary: Accept-Encoding header
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多