.NET Core 常用加密和Hash工具NETCore.Encrypt
前言
在日常开发过程中,不可避免的涉及到数据加密解密(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 秘钥
var aseKey = EncryptProvider.CreateAesKey(); var key = aesKey.Key;
var iv = aesKey.IV;
AES 加密
var srcString = "aes encrypt";
//不带加密向量
var encrypted = EncryptProvider.AESEncrypt(srcString, key);
var srcString = "aes encrypt";
//带加密向量
var encrypted = EncryptProvider.AESEncrypt(srcString, key, iv);
//对byte[] 进行aes加密(version 2.0.6)
var srcBytes = new bytes[]{xxxx};
//带加密向量
var encryptedBytes = EncryptProvider.AESEncrypt(srcBytes , key, iv);
AES 解密
var encryptedStr = "xxxx";
//不带加密向量(与加密方式对应)
var decrypted = EncryptProvider.AESDecrypt(encryptedStr, key);
var encryptedStr = "xxxx";
//带加密向量
var decrypted = EncryptProvider.AESDecrypt(encryptedStr, key, iv);
//对byte[] 进行aes解密(version 2.0.6)
var encryptedBytes = new bytes[]{xxxx};
//带加密向量
var encryptedBytes = EncryptProvider.AESDecrypt(encryptedBytes , key, iv);
DES 操作
创建DES 秘钥
//秘钥长度为24
var desKey = EncryptProvider.CreateDesKey();
DES加密
var srcString = "des encrypt";
var encrypted = EncryptProvider.DESEncrypt(srcString, key);
//对byte[] 进行des加密(version 2.0.6)
var srcBytes = new bytes[]{xxxx};
var encryptedBytes = EncryptProvider.DESEncrypt(srcBytes , key);
DES解密
var encryptedStr = "xxxx";
var decrypted = EncryptProvider.DESDecrypt(encryptedStr, key);
//对byte[] 进行des解密(version 2.0.6)
var encryptedBytes = new bytes[]{xxxx};
var decryptedBytes = EncryptProvider.DESDecrypt(decryptedBytes , key)
RSA 操作
RSA秘钥长度枚举
public enum RsaSize
{
R2048=2048,
R3072=3072,
R4096=4096
}
创建RSA秘钥
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 方法
string rawStr = "xxx";
string signStr = EncryptProvider.RSASign(rawStr, privateKey);
bool result = EncryptProvider.RSAVerify(rawStr, signStr, publicKey);
RSA加密
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解密
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
var privateKey = rsaKey.PrivateKey;
RSA rsa = EncryptProvider.RSAFromString(privateKey);
RSA 和 PEM 相互转换
//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
var srcString = "Md5 hash";
var hashed = EncryptProvider.Md5(srcString);
SHA
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
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加密
var srcString = "base64 string";
var hashed = EncryptProvider.Base64Encrypt(srcString); //default encoding is UTF-8 //Encoding.ASCII
var hashed = EncryptProvider.Base64Encrypt(srcString,Encoding.ASCII);
Base64解密
var encryptedStr = "xxxxx";
var strValue = EncryptProvider.Base64Decrypt(encryptedStr); //default encoding is UTF-8 //Encoding.ASCII(需要与加密编码对应)
var strValue = EncryptProvider.Base64Decrypt(encryptedStr,Encoding.ASCII);
EncryptExtensions扩展
引用命名空间
using NETCore.Encrypt.Extensions;
MD5
var hashed="some string".MD5();
SHA
var hashed="some string".SHA1();
var hashed="some string".SHA256();
var hashed="some string".SHA384();
var hashed="some string".SHA512();
HMAC
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,你也可以参与到项目中,让这个工具更加完善,希望对大家有帮助。
.NET Core 常用加密和Hash工具NETCore.Encrypt的更多相关文章
- java常用加密和解密工具类EncryptUtil.java
package cn.util; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; im ...
- 6个常用Java 源代码 保护工具(混淆、加密、底层)
6个常用Java 源代码 保护工具(混淆.加密.底层) ProGuard Java源代码保护工具ProGuard的3.6与4.1版 下载地址:http://download.csdn.net/sou ...
- .NET Core常用配置文件示例
.NET Core相关地址: 1.官网:https://www.microsoft.com/net 2..NET Core:http://dotnet.github.io/3.Getting Star ...
- iOS常用加密方法(aes、md5、base64)
1.代码 iOS常用加密方法(aes.md5.base64) .AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by 周 ...
- Python常用加密解密算法
MD5加密 简介 这是一种使用非常广泛的加密方式,不可逆的,常见16位和32位一般都是md5 实现 import hashlib data = '你好' print(hashlib.md5(data. ...
- iOS代码加密常用加密方式
iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...
- dig 常用的域名查询工具
dig 命令是常用的域名查询工具,可以用来测试域名系统工作是否正常. 语法: dig (选项) (参数) 选项: @<服务器地址>: 指定进行域名解析的域名服务器: -b: 当主机具有多个 ...
- 分方式缓存常用的一致性hash是什么原理
分方式缓存常用的一致性hash是什么原理 一致性hash是用来解决什么问题的?先看一个场景有n个cache服务器,一个对象object映射到哪个cache上呢?可以采用通用方法计算object的has ...
- PHP的几个常用加密函数(转载 https://jellybool.com/post/php-encrypt-functions)
PHP的几个常用加密函数 在网站的开发过程中,常常需要对部分数据(如用户密码)进行加密,本文主要介绍PHP的几个常见的加密函数 MD5加密: string md5 ( string $str [, b ...
随机推荐
- (11)Are you a giver or a taker?
https://www.ted.com/talks/adam_grant_are_you_a_giver_or_a_taker/transcript 00:00I want you to look a ...
- Codeforces Round #538 (Div. 2) C 数论 + 求b进制后缀零
https://codeforces.com/contest/1114/problem/C 题意 给你一个数n(<=1e8),要你求出n!在b进制下的后缀零个数(b<=1e12) 题解 a ...
- JMeter压力测试及服务器状态监控教程
转载自:https://blog.csdn.net/cbzcbzcbzcbz/article/details/78023327 前段时间公司需要对服务器进行压力测试,包括登录前的页面和登录后的页面,主 ...
- laravel 5.1 使用Eloquent ORM 操作实例
Laravel 的 Eloquent ORM 提供了更优雅的ActiveRecord 实现来和数据库的互动. 每个数据库表对应一个模型文件. 数据库配置 .env文件(也可以直接修改config/da ...
- 理解shell的eval命令
看以下两条命令:[zhangsan@XEN /sys]$ a="ls";b="\$a";c="$b";"$c"Hey! ...
- 图片轮滚形式A
思想解读: 一共有5幅图片,初始时只显示一幅,其余四幅隐藏.然后使用trigger设置右下角的点击事件,根据点击的索引显示某幅图片.原理不算复杂. 结论: trigger的使用,模拟点击 层淡入淡出函 ...
- AIX 批量更改密码
使用 chpasswd 可以使用 chpasswd 方便地更改单个或多个账户密码.这意味着不需要像平时一样在命令行上重复输入密码.尽管可以以交互方式使用 chpasswd,但是我建议以非交互方式使用它 ...
- MapGIS计算瓦片数据集
https://www.docin.com/p-2103834433.html
- Linux 下socket通信终极指南(附TCP、UDP完整代码)
linux下用socket通信,有TCP.UDP两种协议,网上的很多教程把两个混在了一起,或者只讲其中一种.现在我把自己这两天研究的成果汇总下来,写了一个完整的,适合初学者参考,也方便自己以后查阅. ...
- Codeforces812B Sagheer, the Hausmeister 2017-06-02 20:47 85人阅读 评论(0) 收藏
B. Sagheer, the Hausmeister time limit per test 1 second memory limit per test 256 megabytes input s ...