zoukankan      html  css  js  c++  java
  • .net 对称加密


    后台

     
    public class CryptoHelper
        {
            // 对称加密算法提供器
            private ICryptoTransform encryptor;//加密器对象
            private ICryptoTransform decryptor;//解密器对象
            private const int BufferSize = 1024;
            public CryptoHelper(String algorithmName, String key)
            {
                SymmetricAlgorithm provider = SymmetricAlgorithm.Create(algorithmName);
                provider.Key = Encoding.UTF8.GetBytes(key);//加密密钥
                provider.IV = new byte[] { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };//偏移量
                encryptor = provider.CreateEncryptor();
                decryptor = provider.CreateDecryptor();
            }
            /// <summary>
            ///  TripleDES 算法 给密钥加密
            /// </summary>
            /// <param name="key"></param>
            public CryptoHelper(string key) : this("TripleDES", key) { }
            /// <summary>
            /// 加密算法
            /// </summary>
            /// <param name="clearText"></param>
            /// <returns></returns>
            public String Encrypt(String clearText)
            {
                //创建明文流
                byte[] clearBuffer = Encoding.UTF8.GetBytes(clearText);
                MemoryStream clearStream = new MemoryStream(clearBuffer);
                MemoryStream encryptedStream = new MemoryStream();
                CryptoStream cryptoStream = new CryptoStream(encryptedStream, encryptor, CryptoStreamMode.Write);
                //将明文流写入到buffer中
                //将buffer中的数据写入到cryptoStream 中
                int bytesRead = 0;
                byte[] buffer = new byte[BufferSize];
                //不能用循环 会执行两次
                //do
                //{
                    bytesRead = clearStream.Read(buffer, 0, BufferSize);
                    cryptoStream.Write(buffer, 0, BufferSize);
                //} while (bytesRead > 0);
                cryptoStream.FlushFinalBlock();
                //获取加密后的文本
                buffer = encryptedStream.ToArray();
                string encryptedText = Convert.ToBase64String(buffer);
                return encryptedText;
            }
            /// <summary>
            /// 解密算法
            /// </summary>
            /// <param name="encryptedText"></param>
            /// <returns></returns>
            public String Decrypt(String encryptedText)
            {
                byte[] encryptedBuffer = Convert.FromBase64String(encryptedText);
                Stream encryptedStream = new MemoryStream(encryptedBuffer);
                MemoryStream clearStream = new MemoryStream();
                CryptoStream cryptoStream = new CryptoStream(encryptedStream, decryptor, CryptoStreamMode.Read);
                int bytesRead = 0;
                byte[] buffer = new byte[BufferSize];
                //不能用循环 会执行两次
                //do
                //{
                    bytesRead = cryptoStream.Read(buffer, 0, BufferSize);
                    clearStream.Write(buffer, 0, bytesRead);
                //} while (bytesRead > 0);
                buffer = clearStream.GetBuffer();
                String clearText = Encoding.UTF8.GetString(buffer, 0, (int)clearStream.Length);
                return clearText;
            }
            public static String Encrypt(string clearText, string Key)
            {
                CryptoHelper helper = new CryptoHelper(Key);
                return helper.Encrypt(clearText);
            }
            public static String Decrypt(String encryptedText, String Key)
            {
                CryptoHelper helper = new CryptoHelper(Key);
                return helper.Decrypt(encryptedText);
            }
        }  
     
    前台
     String key = "abcdefghijklmno2";//17位数
                String clearText = "欢迎光临!www.ritztours.com";
                CryptoHelper helper = new CryptoHelper(key);
                String encryptedText = helper.Encrypt(clearText);
                String DecryptText = helper.Decrypt(encryptedText); 
  • 相关阅读:
    想要提高自己的写作水平?吃透这篇文章就够了
    Linux(Ubuntu)下搭建ASP.NET Core环境
    详解ASP.NET Core Docker部署
    《你有多少问题要请示》精华集粹
    5年,我从文员一路晋升到总监,薪资翻了5倍[转]
    《设计你的人生》的部分经典语录
    深入浅出Redis-redis哨兵集群[转]
    什么是全栈开发者
    Asp.net mvc中应用autofac
    js unicode处理
  • 原文地址:https://www.cnblogs.com/nixiaodong/p/6912583.html
Copyright © 2011-2022 走看看