C# 常用加密解密方法

简介: 版权声明:欢迎评论和转载,转载请注明来源。 https://blog.csdn.net/zy332719794/article/details/41695393 字符串加密分可逆和不可逆加密两种,下面直接贴上代码using System;using System.
版权声明:欢迎评论和转载,转载请注明来源。 https://blog.csdn.net/zy332719794/article/details/41695393

字符串加密分可逆和不可逆加密两种,下面直接贴上代码


using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace Operator.CommonOp
{
    /// <summary>
    /// 字符串加密。
    /// </summary>
    public class StringSecurity
    {
        /// <summary>
        /// MD5加密。
        /// </summary>
        public static string MD5Encrypt(string originalString)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] palindata = Encoding.Default.GetBytes(originalString);
            byte[] encryptdata = md5.ComputeHash(palindata);

            return Convert.ToBase64String(encryptdata);
        }

        /// <summary>
        /// RAS加密。
        /// </summary>
        public static string RSAEncrypt(string originalString)
        {
            CspParameters param = new CspParameters();
            param.KeyContainerName = "12345";

            using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param))
            {
                byte[] plaindata = Encoding.Default.GetBytes(originalString);
                byte[] encryptdata = rsa.Encrypt(plaindata, false);

                return Convert.ToBase64String(encryptdata);
            }
        }

        /// <summary>
        /// RAS解密。
        /// </summary>
        public static string RSADecrypt(string securitylString)
        {
            CspParameters param = new CspParameters();
            param.KeyContainerName = "12345";
            using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param))
            {
                byte[] encryptdata = Convert.FromBase64String(securitylString);
                byte[] decryptdata = rsa.Decrypt(encryptdata, false);
                return Encoding.Default.GetString(decryptdata);
            }
        }

        /// <summary>
        /// DES加密。
        /// </summary>
        public static string DESEncrypt(string originalString)
        {
            string securtyString = null;
            string key = "12345678";
            string iv = "87654321";
            byte[] btKey = Encoding.UTF8.GetBytes(key);
            byte[] btIV = Encoding.UTF8.GetBytes(iv);
            byte[] inData = Encoding.UTF8.GetBytes(originalString);

            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            MemoryStream ms = new MemoryStream();            
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write);

            cs.Write(inData, 0, inData.Length);
            cs.FlushFinalBlock();

            securtyString = Convert.ToBase64String(ms.ToArray());
            cs.Close();
            ms.Close();

            return securtyString;
        }

        /// <summary>
        /// DES解密。
        /// </summary>
        public static string DESDecrypt(string securityString)
        {
            byte[] inData = null;
            try
            {
                inData = Convert.FromBase64String(securityString);
            }
            catch (Exception)
            {
                return null;
            } 

            string originalString = null;
            string key = "12345678";
            string iv = "87654321";
            byte[] btKey = Encoding.UTF8.GetBytes(key);
            byte[] btIV = Encoding.UTF8.GetBytes(iv);

            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIV), CryptoStreamMode.Write);

            cs.Write(inData, 0, inData.Length);
            try
            {
                cs.FlushFinalBlock();
            }
            catch (Exception)
            {
                ms.Close();
                return null;
            }
            

            originalString = Encoding.UTF8.GetString(ms.ToArray()); 
            cs.Close();
            ms.Close();

            return originalString;
        }        
    }
}


相关文章
|
5天前
|
程序员 C#
C#抽象类和抽象方法详解
C#抽象类和抽象方法详解
8 0
|
4天前
|
存储 开发框架 .NET
C#中将DataTable转化成ListT的方法解析
C#中将DataTable转化成ListT的方法解析
6 0
|
6天前
|
数据采集 前端开发 数据挖掘
Fizzler库+C#:从微博抓取热点的最简单方法
本文介绍如何使用Fizzler库和C#构建微博热点信息爬虫。通过Fizzler的CSS选择器定位关键信息,提取热点标题和排名,实现微博内容的智能挖掘。示例代码展示单线程和多线程采集方法,并涉及代理IP使用。
Fizzler库+C#:从微博抓取热点的最简单方法
|
7天前
|
存储 数据采集 API
C# GetField 方法应用实例
C# GetField 方法应用实例
|
7天前
|
JSON 安全 API
C# GetMethod 方法应用实例
C# GetMethod 方法应用实例
|
22天前
|
存储 安全 网络安全
C#编程的安全性与加密技术
【4月更文挑战第21天】C#在.NET框架支持下,以其面向对象和高级特性成为安全软件开发的利器。本文探讨C#在安全加密领域的应用,包括使用System.Security.Cryptography库实现加密算法,利用SSL/TLS保障网络传输安全,进行身份验证,并强调编写安全代码的重要性。实际案例涵盖在线支付、企业应用和文件加密,展示了C#在应对安全挑战的同时,不断拓展其在该领域的潜力和未来前景。
|
23天前
|
设计模式 IDE 测试技术
提升 C#编程效率的技巧与方法
【4月更文挑战第20天】提升C#编程效率的关键技巧包括:选择合适的IDE(如Visual Studio)、掌握基础语法、规划良好代码结构、使用代码生成工具、复用代码、利用库和框架、定期重构、应用设计模式、避免过度设计、进行代码审查、自动化测试、学习新技术、养成良好编程习惯、定期备份代码及参与技术社区。通过这些方法,开发者能提高代码质量和开发效率。
|
Java 数据安全/隐私保护
Java实现最电话号码的简单加密源码
Java实现最电话号码的简单加密源码
20 0
|
3月前
|
存储 安全 算法
【接口加密】Java中的接口加密实践
【接口加密】Java中的接口加密实践
|
3月前
|
算法 安全 Java
Java 实现 RSA 非对称加密算法-加解密和签名验签
Java 实现 RSA 非对称加密算法-加解密和签名验签
102 0