C#安全加密类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using System.Data;
using System.Data.SQLite;
using System.Web;
using System.Runtime.InteropServices; namespace AiXinTang.User
{
public static class DbSafe
{
public static DataTable GetNewDataTable(DataTable dt, string condition, string sortstr)
{
DataTable newdt = new DataTable();
newdt = dt.Clone();
DataRow[] dr = dt.Select(condition, sortstr);
for (int i = ; i < dr.Length; i++)
{
newdt.ImportRow((DataRow)dr[i]);
}
return newdt;//返回的查询结果
} public static string md5(string str, int code)
{
string mymd5 = string.Empty;
if (code == ) //16位MD5加密(取32位加密的9~25字符)
{
mymd5 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(, );
}
if (code == ) //32位加密
{
mymd5 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();
}
return mymd5;
} public static string myChar = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*()_+,./;'|:?-={}"; /// <summary>
/// 根据制定位数获取不同随机字符串
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public static string GetStr(int num)
{
int n = myChar.Length;
string str = string.Empty;
if (num < n)
{
Random _currenRandom = new Random(Guid.NewGuid().GetHashCode());
for (int i = ; i < num; i++)
{
int _n = _currenRandom.Next(, n - );
str += myChar.Substring(_n, );
}
}
return str;
} /// <summary>
/// 生成AES密钥32位
/// </summary>
public static string GetAESKey
{
get
{
return GetStr();
}
} /// <summary>
/// 生成AES常量16位
/// </summary>
public static string GetAESIV
{
get
{
return GetStr();
}
} /// <summary>
/// 生成DES密钥32位
/// </summary>
public static string GetDESKey
{
get
{
return GetStr();
}
} /// <summary>
/// 生成DES常量16位
/// </summary>
public static string GetDESIV
{
get
{
return GetStr();
}
} } /// <summary>
/// DES加密解密 KEY-8 IV-16
/// </summary>
public static class DES
{ /// <summary>
/// DES加密 KEY-8 IV-16
/// </summary>
/// <param name="plainStr">明文字符串</param>
/// <returns>密文</returns>
public static string DESEncrypt(string Key, string IV, string plainStr)
{
byte[] bKey = Encoding.UTF8.GetBytes(Key);
byte[] bIV = Encoding.UTF8.GetBytes(IV);
byte[] byteArray = Encoding.UTF8.GetBytes(plainStr); string encrypt = null;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
try
{
using (MemoryStream mStream = new MemoryStream())
{
using (CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))
{
cStream.Write(byteArray, , byteArray.Length);
cStream.FlushFinalBlock();
encrypt = Convert.ToBase64String(mStream.ToArray());
}
}
}
catch { }
des.Clear(); return encrypt;
} /// <summary>
/// DES解密 KEY-8 IV-16
/// </summary>
/// <param name="encryptStr">密文字符串</param>
/// <returns>明文</returns>
public static string DESDecrypt(string Key, string IV, string encryptStr)
{
byte[] bKey = Encoding.UTF8.GetBytes(Key);
byte[] bIV = Encoding.UTF8.GetBytes(IV);
byte[] byteArray = Convert.FromBase64String(encryptStr); string decrypt = null;
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
try
{
using (MemoryStream mStream = new MemoryStream())
{
using (CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))
{
cStream.Write(byteArray, , byteArray.Length);
cStream.FlushFinalBlock();
decrypt = Encoding.UTF8.GetString(mStream.ToArray());
}
}
}
catch { }
des.Clear(); return decrypt;
}
} /// <summary>
/// AES加密解密 KEY-32 IV-16
/// </summary>
public static class AES
{ /// <summary>
/// AES加密 KEY-32 IV-16
/// </summary>
/// <param name="plainStr">明文字符串</param>
/// <returns>密文</returns>
public static string AESEncrypt(string Key, string IV, string plainStr)
{
byte[] bKey = Encoding.UTF8.GetBytes(Key);
byte[] bIV = Encoding.UTF8.GetBytes(IV);
byte[] byteArray = Encoding.UTF8.GetBytes(plainStr); string encrypt = null;
Rijndael aes = Rijndael.Create();
try
{
using (MemoryStream mStream = new MemoryStream())
{
using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write))
{
cStream.Write(byteArray, , byteArray.Length);
cStream.FlushFinalBlock();
encrypt = Convert.ToBase64String(mStream.ToArray());
}
}
}
catch { }
aes.Clear(); return encrypt;
} /// <summary>
/// AES解密 KEY-32 VI-IV
/// </summary>
/// <param name="encryptStr">密文字符串</param>
/// <returns>明文</returns>
public static string AESDecrypt(string Key, string IV, string encryptStr)
{
byte[] bKey = Encoding.UTF8.GetBytes(Key);
byte[] bIV = Encoding.UTF8.GetBytes(IV);
byte[] byteArray = Convert.FromBase64String(encryptStr); string decrypt = null;
Rijndael aes = Rijndael.Create();
try
{
using (MemoryStream mStream = new MemoryStream())
{
using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write))
{
cStream.Write(byteArray, , byteArray.Length);
cStream.FlushFinalBlock();
decrypt = Encoding.UTF8.GetString(mStream.ToArray());
}
}
}
catch { }
aes.Clear(); return decrypt;
} } /// <summary>
/// SQLITE操作
/// </summary>
public static class Sqlite
{
/// <summary>
/// 是否链接成功
/// </summary>
/// <param name="path"></param>
/// <param name="pwd"></param>
/// <returns></returns>
public static bool IfConn(string path, string pwd)
{
bool r = false;
if (!string.IsNullOrEmpty(path))
{
var con = new SQLiteConnection();
if (!string.IsNullOrEmpty(pwd))
{
con.ConnectionString = String.Format("Data Source={0};Version=3;Password={1}", path.Trim(), pwd.Trim());
}
else
{
con.ConnectionString = String.Format("Data Source={0};Version=3;", path.Trim());
}
try
{
con.Open();
r = true; }
catch
{
r = false;
}
finally
{ con.Close();
}
}
return r;
} /// <summary>
/// 重置数据库链接密码
/// </summary>
/// <param name="path"></param>
/// <param name="pwdold"></param>
/// <param name="pwdnew"></param>
/// <returns></returns>
public static bool SetPwd(string path, string pwdold, string pwdnew)
{
bool r = false;
var con = new SQLiteConnection();
if (!string.IsNullOrEmpty(pwdold))
{
con.ConnectionString = String.Format("Data Source={0};Version=3;Password={1}", path.Trim(), pwdold.Trim());
}
else
{
con.ConnectionString = String.Format("Data Source={0};Version=3;", path.Trim());
}
try
{
con.Open();
if (!string.IsNullOrEmpty(pwdnew.Trim()))
{
con.ChangePassword(pwdnew.Trim());
}
r = true; }
catch
{
r = false;
}
finally
{ con.Close();
}
return r;
} [DllImport("kernel32.dll")]
public static extern IntPtr _lopen(string lpPathName, int iReadWrite); [DllImport("kernel32.dll")]
public static extern bool CloseHandle(IntPtr hObject);
/// <summary>
/// 创建新的用户数据库
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static bool DbNew(string name,string pwd)
{
bool r = false;
string path = HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath.TrimEnd('\\')+@"\app_data\");
if (File.Exists(path + "AXT.User.Demo.config") && !File.Exists(path + name + ".config"))
{
File.Copy(path + "AXT.User.Demo.config", path + name+".config");
if (File.Exists(path + name + ".config"))
{
const int OF_READWRITE = ;
const int OF_SHARE_DENY_NONE = 0x40;
IntPtr HFILE_ERROR = new IntPtr(-);
IntPtr vHandle = _lopen(path + name + ".config", OF_READWRITE | OF_SHARE_DENY_NONE);
CloseHandle(vHandle);
if (SetPwd(path + name + ".config", "", pwd))
{
r = true;
}
}
}
return r;
} public static bool IsFileInUse(string fileName)
{
bool inUse = true; FileStream fs = null;
try
{
fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None); inUse = false;
}
catch
{ }
finally
{
if (fs != null) fs.Close();
}
return inUse;
} }
}
C#安全加密类的更多相关文章
- php加密类
1.需求 了解php加密类的使用 2.例子 参考ci的3.1.2的新版加密类,一个不传参,用默认加密算法,加密模式的例子 //0.加载加密类 $this->load->library('e ...
- C#加密类
var es= EncryptSugar.GetInstance(); string word = "abc"; var wordEncrypt = es.Encrypto(wor ...
- PHP的AES加密类
PHP的AES加密类 aes.php <?php /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...
- C# DES加密类,16位的加密。
这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题. 可以直接调用里面的加密和解密的方法. using System; using System. ...
- php实现aes加密类
php实现的aes加密类,代码中有使用方法. <?php //php aes加密类 class AESMcrypt { public $iv = null; public $key = null ...
- Java 自带的加密类MessageDigest类(加密MD5和SHA)
Java 自带的加密类MessageDigest类(加密MD5和SHA) - X-rapido的专栏 - CSDN博客 https://blog.csdn.net/xiaokui_wingfly/ar ...
- C#简单的加密类
1.加密 public class EncryptHepler { // 验值 static string saltValue = "XXXX"; // 密码值 static st ...
- Java常用的加密解密类(对称加密类)
Java常用的加密解密类 原文转载至:http://blog.csdn.net/wyc_cs/article/details/8793198 原创 2013年04月12日 14:33:35 1704 ...
- JAVA中简单的MD5加密类(MD5Utils)
MD5加密分析: JDK API: 获取对象的API: 加密的API: package cn.utils; import java.security.MessageDigest; im ...
- C#使用SHA1加密类(RSAFromPkcs8)支持1024位和2048位私钥
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
随机推荐
- 【原创】Jquery初体验二
快速导航 一.传统方式生成Table 二.使用jquery.tmpl插件快速生成Table 三.Jquery中的操作class的几个方法 四:jq里面的克隆 五:属性过滤器 六:表单元素过滤器 一.传 ...
- Chrome 开发工具之Timeline/Performance
之前有说到Element,Console,Sources大多运用于debug,Network可用于debug和查看性能,今天的主角Timeline(现已更名Performance)更多的是用在性能优化 ...
- 分享 : 警惕MySQL运维陷阱:基于MyCat的伪分布式架构
分布式数据库已经进入了全面快速发展阶段.这种发展是与时俱进的,与人的需求分不开,因为现在信息时代的高速发展,导致数据量和交易量越来越大.这种现象首先导致的就是存储瓶颈,因为MySQL数据库实质上还是一 ...
- Ceph/共享存储 汇总
Ceph 存储集群 - 搭建存储集群 Ceph 存储集群 - 存储池 Ceph 块设备 - 命令,快照,镜像 Ceph 块设备 - 块设备快速入门 OpenStack 对接 Ceph CentOS7 ...
- Go常量与运算符
常量的定义 常量的值在编译时就已经确定 常量的定义格式与变量基本相同 等号右侧必须是常量或者常量表达式 常量表达式中的函数必须是内置函数 package main import ( "fmt ...
- JSP的九个隐式对象
JSP使用脚本元素作为一种简易方法在模板数据中嵌入java代码,这些脚本元素在JSP翻译成Servlet的阶段,都被转化为Servlet中的java代码. JSP引擎在调用JSP对应的_jspServ ...
- java为什么使用TypeReference
用途 在使用fastJson时,对于泛型的反序列化很多场景下都会使用到TypeReference,例如: void testTypeReference() { List<Integer> ...
- 【JS】for in循环对象,hasOwnProperty()的作用
var obj = { name:"echolun", age:", sex:"male" }, objName=[], //用来装对象属性名 obj ...
- 公众号开发之wx-tools+springboot应用实战-音乐爬虫推送[JAVA]
springboot+wx-tools实践!音乐爬虫推送公众号DEMOGitHub地址:wx-tools 最终DEMO源码地址: music_collector 先理一下大概的开发步骤: 1. 创建一 ...
- C# Hadoop学习笔记(一)—环境安装
一.安装环境 1,前期准备:官网下载“NuGet Package Manager”,按自己已有的VS环境下载对应版本: 2,利用NuGet下载Hadoop For .NET SDK,地址“http:/ ...