惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
V
Vulnerabilities – Threatpost
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
SecWiki News
SecWiki News
S
Security @ Cisco Blogs
Schneier on Security
Schneier on Security
B
Blog
TaoSecurity Blog
TaoSecurity Blog
The Last Watchdog
The Last Watchdog
H
Hacker News: Front Page
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园_首页
D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Y
Y Combinator Blog
W
WeLiveSecurity
N
News and Events Feed by Topic
F
Fortinet All Blogs
PCI Perspectives
PCI Perspectives
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Recent Announcements
Recent Announcements
Forbes - Security
Forbes - Security
T
Tailwind CSS Blog
Hacker News: Ask HN
Hacker News: Ask HN
爱范儿
爱范儿
腾讯CDC
Last Week in AI
Last Week in AI
月光博客
月光博客
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
Help Net Security
Help Net Security
V
V2EX
C
Cyber Attacks, Cyber Crime and Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
H
Heimdal Security Blog
L
LINUX DO - 最新话题
GbyAI
GbyAI
The Hacker News
The Hacker News
罗磊的独立博客
S
SegmentFault 最新的问题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 【当耐特】
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V2EX - 技术
V2EX - 技术
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
O
OpenAI News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - melody&bobo

端口数据库连接 ANSI, UNICODE,UTF8编码的区别 调用系统API打印图片文字 windows2003安全设置 图片与字节数组相互转换的方法 jQuery Ajax 方法调用 Asp.Net WebService 的详细例子 使用instantclient_11_2和PL/SQL Developer工具包连接oracle 11g远程数据库 查看SQL 语句执行性能 SSIS 获取时间表达式 获得时间段之间每月的最后一天 ADSL拨号获得不同IP地址 C#(.Net) 解决Informix中文乱码问题 SQL SPLIT() 方法实现 JS获取URL参数值 datatable操作集合 表单提交文件 - melody&bobo - 博客园 nginx实现网站负载均衡测试实例(windows下IIS做负载实测) Web Application Stress Tool(WAS,Web应用负载测试工具)详细说明 Base64 加密字符串和文件
C#加密解密
melody&bobo · 2015-11-17 · via 博客园 - melody&bobo
public sealed class EncryptUtils

    {

        #region Base64加密解密

        /// <summary>

        /// Base64加密

        /// </summary>

        /// <param name="input">需要加密的字符串</param>

        /// <returns></returns>

        public static string Base64Encrypt(string input)

        {

            return Base64Encrypt(input, new UTF8Encoding());

        }

 

        /// <summary>

        /// Base64加密

        /// </summary>

        /// <param name="input">需要加密的字符串</param>

        /// <param name="encode">字符编码</param>

        /// <returns></returns>

        public static string Base64Encrypt(string input, Encoding encode)

        {

            return Convert.ToBase64String(encode.GetBytes(input));

        }

 

        /// <summary>

        /// Base64解密

        /// </summary>

        /// <param name="input">需要解密的字符串</param>

        /// <returns></returns>

        public static string Base64Decrypt(string input)

        {

            return Base64Decrypt(input, new UTF8Encoding());

        }

 

        /// <summary>

        /// Base64解密

        /// </summary>

        /// <param name="input">需要解密的字符串</param>

        /// <param name="encode">字符的编码</param>

        /// <returns></returns>

        public static string Base64Decrypt(string input, Encoding encode)

        {

            return encode.GetString(Convert.FromBase64String(input));

        }

        #endregion

 

        #region DES加密解密

        /// <summary>

        /// DES加密

        /// </summary>

        /// <param name="data">加密数据</param>

        /// <param name="key">8位字符的密钥字符串</param>

        /// <param name="iv">8位字符的初始化向量字符串</param>

        /// <returns></returns>

        public static string DESEncrypt(string data, string key, string iv)

        {

            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);

            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);

 

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

            int i = cryptoProvider.KeySize;

            MemoryStream ms = new MemoryStream();

            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);

 

            StreamWriter sw = new StreamWriter(cst);

            sw.Write(data);

            sw.Flush();

            cst.FlushFinalBlock();

            sw.Flush();

            return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);

        }

 

        /// <summary>

        /// DES解密

        /// </summary>

        /// <param name="data">解密数据</param>

        /// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>

        /// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>

        /// <returns></returns>

        public static string DESDecrypt(string data, string key, string iv)

        {

            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);

            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);

 

            byte[] byEnc;

            try

            {

                byEnc = Convert.FromBase64String(data);

            }

            catch

            {

                return null;

            }

 

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

            MemoryStream ms = new MemoryStream(byEnc);

            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);

            StreamReader sr = new StreamReader(cst);

            return sr.ReadToEnd();

        }

        #endregion

 

        #region MD5加密

        /// <summary>

        /// MD5加密

        /// </summary>

        /// <param name="input">需要加密的字符串</param>

        /// <returns></returns>

        public static string MD5Encrypt(string input)

        {

            return MD5Encrypt(input, new UTF8Encoding());

        }

 

        /// <summary>

        /// MD5加密

        /// </summary>

        /// <param name="input">需要加密的字符串</param>

        /// <param name="encode">字符的编码</param>

        /// <returns></returns>

        public static string MD5Encrypt(string input, Encoding encode)

        {

            MD5 md5 = new MD5CryptoServiceProvider();

            byte[] t = md5.ComputeHash(encode.GetBytes(input));

            StringBuilder sb = new StringBuilder(32);

            for (int i = 0; i < t.Length; i++)

                sb.Append(t[i].ToString("x").PadLeft(2, '0'));

            return sb.ToString();

        }

 

        /// <summary>

        /// MD5对文件流加密

        /// </summary>

        /// <param name="sr"></param>

        /// <returns></returns>

        public static string MD5Encrypt(Stream stream)

        {

            MD5 md5serv = MD5CryptoServiceProvider.Create();

            byte[] buffer = md5serv.ComputeHash(stream);

            StringBuilder sb = new StringBuilder();

            foreach (byte var in buffer)

                sb.Append(var.ToString("x2"));

            return sb.ToString();

        }

 

        /// <summary>

        /// MD5加密(返回16位加密串)

        /// </summary>

        /// <param name="input"></param>

        /// <param name="encode"></param>

        /// <returns></returns>

        public static string MD5Encrypt16(string input, Encoding encode)

        {

            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

            string result = BitConverter.ToString(md5.ComputeHash(encode.GetBytes(input)), 4, 8);

            result = result.Replace("-", "");

            return result;

        }

        #endregion

 

        #region 3DES 加密解密

 

        public static string DES3Encrypt(string data, string key)

        {

            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

 

            DES.Key = ASCIIEncoding.ASCII.GetBytes(key);

            DES.Mode = CipherMode.CBC;

            DES.Padding = PaddingMode.PKCS7;

 

            ICryptoTransform DESEncrypt = DES.CreateEncryptor();

 

            byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(data);

            return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));

        }

 

        public static string DES3Decrypt(string data, string key)

        {

            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

 

            DES.Key = ASCIIEncoding.ASCII.GetBytes(key);

            DES.Mode = CipherMode.CBC;

            DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;

 

            ICryptoTransform DESDecrypt = DES.CreateDecryptor();

 

            string result = "";

            try

            {

                byte[] Buffer = Convert.FromBase64String(data);

                result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));

            }

            catch (Exception e)

            {

 

            }

            return result;

        }

 

        #endregion

    }