前言

 在日常开发过程中,不可避免的涉及到数据加密解密(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.8

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加密 Sign 和 Verify 方法

1
2
3
string rawStr = "xxx";
string signStr = EncryptProvider.RSASign(rawStr, privateKey);
bool   result = EncryptProvider.RSAVerify(rawStr, signStr, publicKey); 

 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);

RSA 和 PEM 相互转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Rsa to pem format key
 
//PKCS1
var pkcs1KeyTuple = EncryptProvider.RSAToPem(false);
var publicPem = pkcs1KeyTuple.publicPem;
var privatePem = pkcs1KeyTuple.privatePem;
 
//PKCS8
var pkcs8KeyTuple = EncryptProvider.RSAToPem(true);
publicPem = pkcs8KeyTuple.publicPem;
privatePem = pkcs8KeyTuple.privatePem;
 
//Rsa from pem key
 
var rsa = EncryptProvider.RSAFromPem(pemPublicKey);
rsa = EncryptProvider.RSAFromPem(pemPrivateKey);
 
//Rsa encrypt and decrypt with pem key
 
var rawStr = "xxx";
var enctypedStr = EncryptProvider.RSAEncryptWithPem(pemPublicKey, rawStr);
var decryptedStr = EncryptProvider.RSADecryptWithPem(pemPrivateKey, enctypedStr);

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();var hashed="some string".SHA256();var hashed="some string".SHA384();var hashed="some string".SHA512();

HMAC

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

Make .NET Great Again

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

 

posted @ 2017-08-24 15:54 雨~桐 阅读(10708) 评论(8) 推荐(39) 编辑
摘要: .NET Core 2.0 发布之后,在Authentication中间件部分,相关API有不少改动(官方文档),本文主要讲的就是实现应用Cookie共享,对Cookie中间件使用不了解的可以去查看官方文档,希望本文对大家有一些帮助。 阅读全文
posted @ 2017-08-23 14:23 雨~桐 阅读(3569) 评论(2) 推荐(7) 编辑
摘要: .NET Core 2.0终于发布了,本文主要讲述在项目从.NET Core1.1升级到.NET Core2.0的过程中,解决使用Cookie中间件新API造成的异常。同时还包括一些新增的扩展和方法的使用,希望对大家有帮助。 阅读全文
posted @ 2017-08-15 18:45 雨~桐 阅读(3083) 评论(11) 推荐(9) 编辑
摘要: Elasticsearch,Kibana,Logstash,NLog实现ASP.NET Core 分布式日志系统,一定有你想看的东西。 阅读全文
posted @ 2017-07-25 14:59 雨~桐 阅读(5747) 评论(18) 推荐(29) 编辑
摘要: VS2017新建视图中文乱码解决办法 阅读全文
posted @ 2017-05-25 18:07 雨~桐 阅读(825) 评论(0) 推荐(1) 编辑
摘要: Nginx启动SSL功能,并进行功能优化,你看这个就足够了。本文介绍了Nginx在SSL功能开启,HTTP和HTTPS共享,SSL证书免输入密码等功能,如果你觉得本文对您有帮着,请赞一个。 阅读全文
posted @ 2016-12-01 10:36 雨~桐 阅读(43530) 评论(5) 推荐(18) 编辑
摘要: centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。 阅读全文
posted @ 2016-09-13 16:14 雨~桐 阅读(37684) 评论(2) 推荐(18) 编辑
摘要: Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、 corosync、pacemaker。但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的 高可用。 阅读全文
posted @ 2016-08-23 16:21 雨~桐 阅读(823) 评论(0) 推荐(1) 编辑
摘要: Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 阅读全文
posted @ 2016-08-22 14:52 雨~桐 阅读(55142) 评论(6) 推荐(46) 编辑
摘要: Redis在3.0版正式引入了集群这个特性。Redis集群是一个分布式(distributed)、容错(fault-tolerant)的 Redis内存K/V服务, 集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集(subset),比如Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。 阅读全文
posted @ 2016-08-17 17:55 雨~桐 阅读(3922) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示