当前位置: 首页 > article >正文

C#加密方式

using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Security.Cryptography;
    using System.Text;
     
    namespace PwdDemo
    {
        public class AESHelper
        {
            /// <summary>
            ///  AES 加密
            /// </summary>
            /// <param name="str">明文(待加密)</param>
            /// <param name="key">密文</param>
            /// <returns></returns>
            public string AesEncrypt(string str, string key)
            {
                if (string.IsNullOrEmpty(str)) return null;
                Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
     
                RijndaelManaged rm = new RijndaelManaged
                {
                    Key = Encoding.UTF8.GetBytes(key),
                    Mode = CipherMode.ECB,
                    Padding = PaddingMode.PKCS7
                };
     
                ICryptoTransform cTransform = rm.CreateEncryptor();
                Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
                return Convert.ToBase64String(resultArray);
            }
     
            /// <summary>
            ///  AES 解密
            /// </summary>
            /// <param name="str">明文(待解密)</param>
            /// <param name="key">密文</param>
            /// <returns></returns>
            public string AesDecrypt(string str, string key)
            {
                if (string.IsNullOrEmpty(str)) return null;
                Byte[] toEncryptArray = Convert.FromBase64String(str);
     
                RijndaelManaged rm = new RijndaelManaged
                {
                    Key = Encoding.UTF8.GetBytes(key),
                    Mode = CipherMode.ECB,
                    Padding = PaddingMode.PKCS7
                };
     
                ICryptoTransform cTransform = rm.CreateDecryptor();
                Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
     
                return Encoding.UTF8.GetString(resultArray);
            }
        }
    }

 AES加密算法

using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Security.Cryptography;
    using System.Text;
     
    namespace PwdDemo
    {
        public class DESHelper
        {
            //密钥
            public static byte[] _KEY  = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
            //向量
            public static byte[] _IV = new byte[] { 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01 };   
     
            /// <summary>
            /// DES加密操作
            /// </summary>
            /// <param name="normalTxt"></param>
            /// <returns></returns>
            public string DesEncrypt(string normalTxt)
            {
                //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(_KEY, _IV), CryptoStreamMode.Write);
     
                StreamWriter sw = new StreamWriter(cst);
                sw.Write(normalTxt);
                sw.Flush();
                cst.FlushFinalBlock();
                sw.Flush();
     
                string strRet = Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
                return strRet;
            }
     
            /// <summary>
            /// DES解密操作
            /// </summary>
            /// <param name="securityTxt">加密字符串</param>
            /// <returns></returns>
            public string DesDecrypt(string securityTxt)//解密  
            {
                //byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(_KEY);
                //byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(_IV);
                byte[] byEnc;
                try
                {
                    securityTxt.Replace("_%_", "/");
                    securityTxt.Replace("-%-", "#");
                    byEnc = Convert.FromBase64String(securityTxt);
                }
                catch
                {
                    return null;
                }
                DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
                MemoryStream ms = new MemoryStream(byEnc);
                CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(_KEY, _IV), CryptoStreamMode.Read);
                StreamReader sr = new StreamReader(cst);
                return sr.ReadToEnd();
            }
        }
    }

DES加密算法

using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Security.Cryptography;
    using System.Text;
     
    namespace PwdDemo
    {
       public class RSAHelper
        {
            private const int RsaKeySize = 2048;
            private const string publicKeyFileName = "RSA.Pub";
            private const string privateKeyFileName = "RSA.Private";
     
            /// <summary>
            ///在给定路径中生成XML格式的私钥和公钥。
            /// </summary>
            public void GenerateKeys(string path)
            {
                using (var rsa = new RSACryptoServiceProvider(RsaKeySize))
                {
                    try
                    {
                        // 获取私钥和公钥。
                        var publicKey = rsa.ToXmlString(false);
                        var privateKey = rsa.ToXmlString(true);
     
                        // 保存到磁盘
                        File.WriteAllText(Path.Combine(path, publicKeyFileName), publicKey);
                        File.WriteAllText(Path.Combine(path, privateKeyFileName), privateKey);
     
                        //Console.WriteLine(string.Format("生成的RSA密钥的路径: {0}\\ [{1}, {2}]", path, publicKeyFileName, privateKeyFileName));
                    }
                    finally
                    {
                        rsa.PersistKeyInCsp = false;
                    }
                }
            }
     
            /// <summary>
            /// 用给定路径的RSA公钥文件加密纯文本。
            /// </summary>
            /// <param name="plainText">要加密的文本</param>
            /// <param name="pathToPublicKey">用于加密的公钥路径.</param>
            /// <returns>表示加密数据的64位编码字符串.</returns>
            public string Encrypt(string plainText, string pathToPublicKey)
            {
                using (var rsa = new RSACryptoServiceProvider(RsaKeySize))
                {
                    try
                    {
                        //加载公钥
                        var publicXmlKey = File.ReadAllText(pathToPublicKey);
                        rsa.FromXmlString(publicXmlKey);
     
                        var bytesToEncrypt = System.Text.Encoding.Unicode.GetBytes(plainText);
     
                        var bytesEncrypted = rsa.Encrypt(bytesToEncrypt, false);
     
                        return Convert.ToBase64String(bytesEncrypted);
                    }
                    finally
                    {
                        rsa.PersistKeyInCsp = false;
                    }
                }
            }
     
            /// <summary>
            /// Decrypts encrypted text given a RSA private key file path.给定路径的RSA私钥文件解密 加密文本
            /// </summary>
            /// <param name="encryptedText">加密的密文</param>
            /// <param name="pathToPrivateKey">用于加密的私钥路径.</param>
            /// <returns>未加密数据的字符串</returns>
            public string Decrypt(string encryptedText, string pathToPrivateKey)
            {
                using (var rsa = new RSACryptoServiceProvider(RsaKeySize))
                {
                    try
                    {
                        var privateXmlKey = File.ReadAllText(pathToPrivateKey);
                        rsa.FromXmlString(privateXmlKey);
     
                        var bytesEncrypted = Convert.FromBase64String(encryptedText);
     
                        var bytesPlainText = rsa.Decrypt(bytesEncrypted, false);
     
                        return System.Text.Encoding.Unicode.GetString(bytesPlainText);
                    }
                    finally
                    {
                        rsa.PersistKeyInCsp = false;
                    }
                }
            }
        }
    }

RSA加密算法

using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Security.Cryptography;
    using System.Text;
     
    namespace PwdDemo
    {
        public class SHAHelper
        {
            public string SHAmd5Encrypt(string normalTxt)
            {
                var bytes = Encoding.Default.GetBytes(normalTxt);//求Byte[]数组  
                var Md5 = new MD5CryptoServiceProvider();
                var encryptbytes = Md5.ComputeHash(bytes);//求哈希值  
                return Base64To16(encryptbytes);//将Byte[]数组转为净荷明文(其实就是字符串)  
            }
     
            public string SHA1Encrypt(string normalTxt)
            {
                var bytes = Encoding.Default.GetBytes(normalTxt);
                var SHA = new SHA1CryptoServiceProvider();
                var encryptbytes = SHA.ComputeHash(bytes);
                return Base64To16(encryptbytes);
            }
            public string SHA256Encrypt(string normalTxt)
            {
                var bytes = Encoding.Default.GetBytes(normalTxt);
                var SHA256 = new SHA256CryptoServiceProvider();
                var encryptbytes = SHA256.ComputeHash(bytes);
                return Base64To16(encryptbytes);
            }
            public string SHA384Encrypt(string normalTxt)
            {
                var bytes = Encoding.Default.GetBytes(normalTxt);
                var SHA384 = new SHA384CryptoServiceProvider();
                var encryptbytes = SHA384.ComputeHash(bytes);
                return Base64To16(encryptbytes);
            }
            public string SHA512Encrypt(string normalTxt)
            {
                var bytes = Encoding.Default.GetBytes(normalTxt);
                var SHA512 = new SHA512CryptoServiceProvider();
                var encryptbytes = SHA512.ComputeHash(bytes);
                return Base64To16(encryptbytes);
            }
     
     
            private string Base64To16(byte[] buffer)
            {
                string md_str = string.Empty;
                for (int i = 0; i < buffer.Length; i++)
                {
                    md_str += buffer[i].ToString("x2");
                }
                return md_str;
            }
        }
    }

SHA加密算法

-----------------以上内容大部分摘自网络


http://www.kler.cn/a/520073.html

相关文章:

  • IoTDB 2025 春节值班与祝福
  • 01.K临近算法
  • VSCode安装+配置
  • Unity3D连接PLC的原理
  • 头歌实训作业 算法设计与分析-贪心算法(第5关:求解流水作业调度问题)
  • 汇编知识点整理
  • 在WSL使用gnome终端
  • TCP协议:互联网数据传输的守护者
  • Cpp::特殊类的设计(35)
  • Flutter_学习记录_基本组件的使用记录
  • 机器学习:支持向量机
  • 项目升级Sass版本或升级Element Plus版本遇到的问题
  • 天聚地合:引领API数据流通服务,助力数字经济发展
  • Axial Transformer笔记
  • 人工智能在医疗领域的应用与挑战
  • 基于dlib/face recognition人脸识别推拉流实现
  • 评估篇| 大模型评测综述
  • 裁员避坑指南(9)
  • wxwidgets直接获取系统图标,效果类似QFileIconProvider
  • 【测试】UI自动化测试