前言

在日常开发过程中,不可避免的涉及到数据加密解密(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的更多相关文章

  1. java常用加密和解密工具类EncryptUtil.java

    package cn.util; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; im ...

  2. 6个常用Java 源代码 保护工具(混淆、加密、底层)

    6个常用Java 源代码 保护工具(混淆.加密.底层) ProGuard Java源代码保护工具ProGuard的3.6与4.1版  下载地址:http://download.csdn.net/sou ...

  3. .NET Core常用配置文件示例

    .NET Core相关地址: 1.官网:https://www.microsoft.com/net 2..NET Core:http://dotnet.github.io/3.Getting Star ...

  4. iOS常用加密方法(aes、md5、base64)

    1.代码 iOS常用加密方法(aes.md5.base64) .AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by 周 ...

  5. Python常用加密解密算法

    MD5加密 简介 这是一种使用非常广泛的加密方式,不可逆的,常见16位和32位一般都是md5 实现 import hashlib data = '你好' print(hashlib.md5(data. ...

  6. iOS代码加密常用加密方式

    iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...

  7. dig 常用的域名查询工具

    dig 命令是常用的域名查询工具,可以用来测试域名系统工作是否正常. 语法: dig (选项) (参数) 选项: @<服务器地址>: 指定进行域名解析的域名服务器: -b: 当主机具有多个 ...

  8. 分方式缓存常用的一致性hash是什么原理

    分方式缓存常用的一致性hash是什么原理 一致性hash是用来解决什么问题的?先看一个场景有n个cache服务器,一个对象object映射到哪个cache上呢?可以采用通用方法计算object的has ...

  9. PHP的几个常用加密函数(转载 https://jellybool.com/post/php-encrypt-functions)

    PHP的几个常用加密函数 在网站的开发过程中,常常需要对部分数据(如用户密码)进行加密,本文主要介绍PHP的几个常见的加密函数 MD5加密: string md5 ( string $str [, b ...

随机推荐

  1. regular exception

    RegexBuddy :正则表达式编辑器. 正则表达式:通过特定的规则,选取特定的字符串. ^ 为匹配输入字符串的开始位置.$ 为匹配输入字符串的结束位置. \d匹配[0-9] \w匹配[A-Z a- ...

  2. MySQL Server参数优化 - innodb_file_per_table(独立表空间)

    1 简介    Innodb存储引擎可将所有数据存放于ibdata*的共享表空间,也可将每张表存放于独立的.ibd文件的独立表空间.    共享表空间以及独立表空间都是针对数据的存储方式而言的.    ...

  3. 前端html的简单认识

    一.html 超文本标记语言 hypertext markup language 二.html的结构 三.html标签格式 1.标签由<>把关键字括起来 2.标签通常是成对出现的 , eg ...

  4. centos7 hive + 远程mysql 搭建笔记

    1.require:java环境,本地可用的hadoop,远程可访问的mysql 2.拷贝hive文件(hive-2.2.1) 3.设置环境变量 export HIVE_HOME=/data/spar ...

  5. 【转】Linux useradd

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

  6. Router components

    Input Unit The Input unit contains virtual channel buffers and an input VC arbiter. Route Info: use ...

  7. C++STL容器重点

    string 查找和替换 vector 删除

  8. python中global 和 nonlocal的使用

    1.global关键字用来在函数或其他局部作用域中使用全局变量.但是如果不修改全局变量也可以不使用global关键字. gcount = 0 def global_test(): gcount+=1 ...

  9. 在eclipse上搭建Roku开发环境

    环境:Oracle VM virtualBox+Ubuntu server 12.0.4.2 LTS+xfce+ Eclipse IDE for C/C++ Developers 4.3.2 参考:h ...

  10. Silverlight子窗口(ChildWindow)传递参数到父窗口演示

    在企业级项目中,子窗口(ChildWindow)是一个常用控件,其展示方式是以弹出窗口来显示信息. 这里我将演示,子窗口传递参数到父窗口的方法.由于我的开发环境都是英文环境,所以部分中文可能显示不正常 ...