zoukankan      html  css  js  c++  java
  • C# DES加密(原创)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Security.Cryptography;
    using System.Globalization;


    namespace SoftRegister
    {
        /// <summary>
        /// DES对称加密、解密
        /// </summary>
        public class DES
        {
            /// <summary>
            ///  创建加密密钥,随机产生
            /// </summary>
            private string CreateKey()
            {
                DESCryptoServiceProvider desCrypto = (DESCryptoServiceProvider)DESCryptoServiceProvider.Create();
                return ASCIIEncoding.ASCII.GetString(desCrypto.Key);
            }

            /// <summary>
            /// 加密Key字符串
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            private string EncryptKey(string key)
            {
                byte[] data = Encoding.UTF8.GetBytes(key);
                string v = "";
                for (int i = data.Length - 1; i >= 0; i--)
                {
                    v += data[i].ToString("X2");
                }
                return v;
            }

            /// <summary>
            /// 解密Key字符串
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            private string DecryptKey(string key)
            {
                List<string> list = new List<string>();
                string v = "";
                for (int i = 0; i < key.Length; i++)
                {
                    list.Add(key[i].ToString() + key[++i].ToString());
                }
                for (int i = list.Count-1; i >= 0; i--)
                {
                    v += ((char)(byte.Parse(list[i], NumberStyles.HexNumber))).ToString();
                }
                return v;
            }

            /// <summary>
            ///  加密字符串
            /// </summary>
            private string EncryptString(string inputString, string key)
            {
                byte[] data = Encoding.UTF8.GetBytes(inputString);
                DESCryptoServiceProvider dessp = new DESCryptoServiceProvider();
                dessp.Key = ASCIIEncoding.ASCII.GetBytes(key);
                dessp.IV = ASCIIEncoding.ASCII.GetBytes(key);
                ICryptoTransform desencrypt = dessp.CreateEncryptor();
                byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
                string v = "";
                for (int i = 0; i < result.Length; i++)
                {
                    v += (result[i]).ToString("X2");
                }
                return v;
            }

            /// <summary>
            ///  解密字符串
            /// </summary>
            private string DecryptString(string inputString, string key)
            {
                List<string> sInput = new List<string>();
                for (int i = 0; i < inputString.Length; i++)
                {
                    sInput.Add(inputString[i].ToString() + inputString[++i].ToString());
                }
                int leng = sInput.Count;
                byte[] data = new byte[leng];
                for (int i = 0; i < data.Length; i++)
                {
                    data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);
                }
                DESCryptoServiceProvider dessp = new DESCryptoServiceProvider();
                dessp.Key = ASCIIEncoding.ASCII.GetBytes(key);
                dessp.IV = ASCIIEncoding.ASCII.GetBytes(key);
                ICryptoTransform desencrypt = dessp.CreateDecryptor();
                byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
                return Encoding.UTF8.GetString(result);
            }

            /// <summary>
            /// 加密字符串
            /// </summary>
            /// <param name="sourceStr"></param>
            /// <returns></returns>
            public string EncryptString(string sourceStr)
            {
                string key = CreateKey();
                string value = EncryptString(sourceStr, key);
                key = EncryptKey(key);
                return value + key;
            }

            /// <summary>
            /// 解密字符串
            /// </summary>
            /// <param name="sourceStr"></param>
            /// <returns></returns>
            public string DecryptString(string sourceStr)
            {
                int keyLeng = 8 * 2;
                sourceStr = sourceStr.Trim();
                int leng = sourceStr.Length;
                string tStr = sourceStr.Substring(0, leng - keyLeng);
                string key = sourceStr.Substring(leng - keyLeng);
                key = DecryptKey(key);
                string v = DecryptString(tStr, key);
                return v;
            }

        }
    }

  • 相关阅读:
    机器学习框架ML.NET学习笔记【5】多元分类之手写数字识别(续)
    机器学习框架ML.NET学习笔记【3】文本特征分析
    机器学习框架ML.NET学习笔记【2】入门之二元分类
    Git项目下载部分文件或文件夹
    一个扫雷游戏和一个自动玩扫雷游戏的程序
    循序渐进学.Net Core Web Api开发系列【16】:应用安全续-加密与解密
    循序渐进学.Net Core Web Api开发系列【15】:应用安全
    循序渐进学.Net Core Web Api开发系列【14】:异常处理
    通过源码学习@functools.lru_cache
    【Python3爬虫】破解时光网登录加密参数并实现模拟登录
  • 原文地址:https://www.cnblogs.com/xyqCreator/p/2277561.html
Copyright © 2011-2022 走看看