• .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); 
  • 相关阅读:
    三次握手四次挥手
    OSI七层模型和TCP/IP协议族
    CSS水平垂直居中方式
    CSS9种水平居中方式
    CSS8种垂直居中方式
    scss 初学笔记 二 混合宏
    scss 初学笔记 一 变量声明 默认的样式 嵌套
    面向对象的程序设计之对象
    underscore.js 源码阅读 一 整体结构
    underscore.js 源码阅读 准备
  • 原文地址:https://www.cnblogs.com/nixiaodong/p/6912583.html
Copyright © 2020-2023  润新知