加密你的字符串
来源:互联网 发布:守底线 知敬畏 编辑:程序博客网 时间:2024/05/18 01:23
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace Encryption
{
/// <summary>
/// 完成字符串的散列生成,以及3DES加密解密码
/// </summary>
public class EncryptTransformer
{
private string mIV;
private string mKey;
private byte[] bIV;
private byte[] bKey;
private TripleDES tDes ;
/// <summary>
/// 解密3DES加密字符串时的构造函数
/// </summary>
/// <param name="key"></param>
/// <param name="iv"></param>
public EncryptTransformer(string key, string iv)
{
Key = key;
IV = iv;
InitEncryptTransformer();
}
/// <summary>
/// 加密数据时用的构造函数
/// 系统自动生成Key,与IV的Base64字符串
/// 请妥协保存
/// </summary>
public EncryptTransformer()
{
InitEncryptTransformer();
}
/// <summary>
/// 用3DES加密字符串,结果已Base64编码返回
/// </summary>
/// <param name="inStr">需要加密的字符串</param>
/// <returns>Base64编码的加密字符串</returns>
public string EncryptString(string inStr)
{
byte[] bytes = Encoding.UTF8.GetBytes(inStr);
ICryptoTransform enTransform= tDes.CreateEncryptor(bKey, bIV);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, enTransform, CryptoStreamMode.Write);
cs.Write(bytes, 0, bytes.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
/// <summary>
/// 解密编码为Base64的加密字符串
/// </summary>
/// <param name="inStr">Base64编码的加密字符串</param>
/// <returns>原字符串数据</returns>
public string DecryptString(string inStr)
{
byte[] bytes = Convert.FromBase64String(inStr);
ICryptoTransform deTransfrom = tDes.CreateDecryptor(bKey, bIV);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms,deTransfrom,CryptoStreamMode.Write);
cs.Write(bytes, 0, bytes.Length);
cs.FlushFinalBlock();
cs.Close();
return Encoding.UTF8.GetString(ms.ToArray());
}
private void InitEncryptTransformer()
{
tDes= new TripleDESCryptoServiceProvider();
if (Key == null || IV==null)
{
tDes.GenerateIV();
bIV = tDes.IV;
tDes.GenerateKey();
bKey = tDes.Key;
Key = Convert.ToBase64String(bKey);
IV = Convert.ToBase64String(bIV);
}
else
{
bIV = Convert.FromBase64String(IV);
bKey = Convert.FromBase64String(Key);
}
}
/// <summary>
/// 将字符串数据以MD5加密后编码成Base64
/// </summary>
/// <param name="inStr"></param>
/// <returns></returns>
public static string MD5(string inStr)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] bytes = Encoding.UTF8.GetBytes(inStr);
byte[] enBytes = md5.ComputeHash(bytes);
return Convert.ToBase64String(enBytes);
}
/// <summary>
/// Base64编码的向量字符串
/// </summary>
public string IV
{
get
{
return mIV;
}
set
{
mIV = value;
bIV = Convert.FromBase64String(value);
}
}
/// <summary>
/// Base64编码的密码
/// </summary>
public string Key
{
get
{
return mKey;
}
set
{
mKey = value;
bKey = Convert.FromBase64String(value);
}
}
}
}
- 加密你的字符串
- 加密你的SQLite
- 加密你的SQLite
- 加密你的SQLite
- 加密你的SQLite
- 加密你的SQLite
- 加密你的SQLite
- 加密你的SQLite
- 加密你的SQLite
- 加密你的SQLite
- 字符串的加密解密
- 字符串的MD5加密
- 字符串的“加密”
- 【加密解密】对字符串的加密解密
- 如何加密你的CMD
- 加密你的Access数据库
- C#中字符串的加密
- C#中字符串的加密
- 任务栏显示时间
- 在这个厚积薄发的年代里
- String,PChar,PByte,Array of Char,Array of Byte 转换
- ReceiptNum不見了
- 投诉申告:政府机构/银行/医院,你们是否该根据客户的需要安排人力?
- 加密你的字符串
- To 想成为优秀女人的女孩
- 第一次写
- 在po_headers_all 中closed_code 狀態'closed','closed for invoice','closed for receiving' 的區別
- 什么是PK
- NGN 2005年情况
- Dell Wireless 3300 维护日志
- 全国DNS的IP一览
- 史上最强的楼主夫妇!!