EncryptHelper加密对象-工具类
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Web.Security; namespace Common.Utility
{
/// <summary>
/// Author:Kt
/// Date Created:2011-04-01
/// Description:加密对象-工具类
/// </summary>
public class EncryptHelper
{
/// <summary>
/// AES 解密
/// </summary>
/// <param name="content">内容</param>
/// <param name="secretKey">私钥(长度: 16、24、32字节)</param>
/// <returns></returns>
public static string AESDecrypt(string content, string secretKey)
{
if (string.IsNullOrEmpty(content)) return null;
Byte[] toEncryptArray = Convert.FromBase64String(content); System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(secretKey),
Mode = System.Security.Cryptography.CipherMode.ECB,
Padding = System.Security.Cryptography.PaddingMode.PKCS7
}; System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateDecryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length); return Encoding.UTF8.GetString(resultArray);
} /// <summary>
/// AES 加密
/// </summary>
/// <param name="content">内容</param>
/// <param name="secretKey">私钥(长度: 16、24、32字节)</param>
/// <returns></returns>
public static string AESEncrypt(string content, string secretKey)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(secretKey);
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(content); RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length); return Convert.ToBase64String(resultArray, , resultArray.Length);
} /// <summary>
/// MD5 加密
/// </summary>
/// <param name="content">内容</param>
/// <returns></returns>
public static string Md5(string content)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(content, "MD5");
} /// <summary>
/// MD5 加密
/// </summary>
/// <param name="content">内容</param>
/// <param name="encode">编码</param>
/// <returns>签名字符串</returns>
public static string Md5(string content, Encoding encode)
{
var result = new StringBuilder();
var md5 = new MD5CryptoServiceProvider();
var bytes = md5.ComputeHash(encode.GetBytes(content));
foreach (var item in bytes)
result.Append(item.ToString("x").PadLeft(, '')); return result.ToString();
} /// <summary>
/// 3DES 解密
/// </summary>
/// <param name="content">内容</param>
/// <param name="secretKey">私钥</param>
/// <param name="ivs">向量</param>
/// <returns></returns>
public static string DESDecrypt(string content, string secretKey, string ivs)
{
SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
mCSP.Mode = CipherMode.CBC;
mCSP.Padding = PaddingMode.PKCS7;
mCSP.Key = Encoding.UTF8.GetBytes(secretKey);
mCSP.IV = Encoding.UTF8.GetBytes(ivs);
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
byt = Convert.FromBase64String(content);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, , byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Encoding.UTF8.GetString(ms.ToArray());
} /// <summary>
/// 3DES 加密
/// </summary>
/// <param name="content">内容</param>
/// <param name="secretKey">私钥</param>
/// <param name="ivs">向量</param>
/// <returns></returns>
public static string DESEncrypt(string content, string secretKey, string ivs)
{
SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
mCSP.Mode = CipherMode.CBC;
mCSP.Padding = PaddingMode.PKCS7;
mCSP.Key = Encoding.UTF8.GetBytes(secretKey);
mCSP.IV = Encoding.UTF8.GetBytes(ivs);
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
byt = Encoding.UTF8.GetBytes(content);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, , byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
}
}
using System;
using System.Text; namespace Common.Utility.Tests
{
/// <summary>
/// 运行示例
/// </summary>
internal partial class Program
{
private static void Main_EncryptHelper(string[] args)
{
string str = "需要加密的字符串12345678";
string md5_1 = EncryptHelper.Md5(str);
string md5_2 = EncryptHelper.Md5(str, Encoding.UTF8); str = "";
string secretKey_AES = Guid.NewGuid().ToString("N");
string JiaMi = EncryptHelper.AESEncrypt(str, secretKey_AES);
string JieMi = EncryptHelper.AESDecrypt(JiaMi, secretKey_AES); string secretKey_DES = "fsT7ObM1nEnrRAGO1djI2YBi";
string ivs_DES = "GUGlYE1g";
JiaMi = EncryptHelper.DESEncrypt(str, secretKey_DES, ivs_DES);
JieMi = EncryptHelper.DESDecrypt(JiaMi, secretKey_DES, ivs_DES);
}
}
}
EncryptHelper加密对象-工具类的更多相关文章
- 对象工具类 - ObjectUtils.java
对象工具类,提供对象克隆.获取对象属性.类型判断.Map转换对象.对象转Map.设置对象属性等. 源码如下:(点击下载 - ObjectUtils.java .JsonUtils.java .gso ...
- Base64加密解密工具类
使用Apache commons codec类Base64进行加密解密 maven依赖 <dependency> <groupId>commons-codec</grou ...
- java MD5加密的工具类
import java.security.MessageDigest; /** * MD5加密工具类 * @author zwq */ public class MD5Util { /** * MD5 ...
- AES加密解密工具类封装(AESUtil)
package club.codeapes.common.utils; import org.springframework.util.Base64Utils; import javax.crypto ...
- 加密解密工具类(Java,DES)
一个Java版的DES加密工具类,能够用来进行网络传输数据加密,保存password的时候进行加密. import java.security.Key; import java.security.sp ...
- 获取Spring容器Bean对象工具类
在开发中,总是能碰到用注解注入不了Spring容器里面bean对象的问题.为了解决这个问题,我们需要一个工具类来直接获取Spring容器中的bean.因此就写了这个工具类,在此记录一下,方便后续查阅. ...
- 019-MD5加密模板工具类
1 MD5加密工具类 package ${enclosing_package}; import java.math.BigInteger; import java.security.MessageDi ...
- Java 序列化对象工具类
SerializationUtils.java package javax.utils; import java.io.ByteArrayInputStream; import java.io.Byt ...
- 根据值获取枚举类对象工具类EnumUtils
枚举类 public enum Sex { man("M","男"),woman("W","女"); private S ...
随机推荐
- python 获取安装包apk, ipa 信息
# -*- coding:utf-8 -*- import re import os import zipfile from biplist import * from androguard.core ...
- JavaScript入门学习之二——函数
在前一章中讲了JavaScript的入门语法,在这一章要看看函数的使用. 函数的定义 JavaScript中的函数和Python中的非常类似,只不过定义的方式有些不同,下面看看是怎么定义的 //定义普 ...
- ZJOI2013 K大数查询 和 LG3380【模板】二逼平衡树(树套树)
K大数查询 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c:如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的 ...
- Acwing-204-表达整数的奇怪方式(扩展中国剩余定理)
链接: https://www.acwing.com/problem/content/206/ 题意: 给定2n个整数a1,a2,-,an和m1,m2,-,mn,求一个最小的非负整数x,满足∀i∈[1 ...
- 四 java web考点
一.GET和POST区别(参考Servlet&JSP学习笔记) <form>中method属性默认为GET. 1.使用POST的情况 GET跟随URL之后,请求参数长度有限,过长的 ...
- yii框架学习(二)
模型 orderby的使用:->orderBy(['addtime'=>SORT_DESC, 'sort'=>SORT_ASC])->all() 在使用find()查询的时候, ...
- 《剑指offer》算法题第六天
今日题目: 顺时针打印矩阵 包含min函数的栈 栈的压入.弹出序列 从上到下打印二叉树 二叉树搜索树的后序遍历序列 二叉树中和为某一值的路径 今天的题目都比较简单,下面一一介绍: 1. 顺时针打印矩阵 ...
- 使用kombu的producer pool 向rabbitmq瞬间发送大量消息
kombu比pika感觉考虑得全面多了,不知道为什么用的人好像少? 生产端是 python-socket.io 的client 接受socketio 消息后, 发到rabbitmq 按时序进行处理 ...
- CodeForces 1197 D Yet Another Subarray Problem
题面 不得不说CF还是很擅长出这种让人第一眼看摸不着头脑然后再想想就发现是个SB题的题的hhh(请自行断句). 设sum[]为前缀和数组,那么区间 [l,r]的价值为 sum[r] - sum[l-1 ...
- VM中的Centos 7配置静态IP
环境: CentOS Linux release 7.6.1810 (Core) VM 网卡配置 将VM的网卡配置成桥接模式 在cmd中查看本机的ip,子网掩码,网关,虚拟机中配置需要和本机在同一个网 ...