zoukankan      html  css  js  c++  java
  • 加密算法

    public class Cryptography
        {
            private static readonly Byte[] IV =
            {
                131, 124, 213, 11, 241, 214, 201, 103,
                138, 225, 188, 216, 116, 247, 152, 145
            };
    
            private Byte[] aesKey =
            {
                121, 249, 165, 183, 172, 16, 18, 24,
                111, 129, 121, 13, 152, 114, 238, 114
            };
    
            private Boolean isDefaultKey;
    
            public String Key
            {
                get { return Convert.ToBase64String(this.aesKey); }
                set
                {
                    this.aesKey = Convert.FromBase64String(value);
                    this.isDefaultKey = false;
                }
            }
    
            public bool IsDefaultKey
            {
                get { return this.isDefaultKey; }
            }
    
            public Byte[] Encrypt(Byte[] plainData)
            {
                using (var aesProvider = new AesCryptoServiceProvider())
                {
                    using (var stream = new MemoryStream())
                    {
                        using (var cryptoStream = new CryptoStream(
                            stream,
                            aesProvider.CreateEncryptor(this.aesKey, IV),
                            CryptoStreamMode.Write))
                        {
                            cryptoStream.Write(plainData, 0, plainData.Length);
                        }
                        var encryptMessageBytes = stream.ToArray();
                        var bts = new Byte[IV.Length + encryptMessageBytes.Length];
                        Array.Copy(IV, 0, bts, 0, IV.Length);
                        Array.Copy(encryptMessageBytes, 0, bts, IV.Length, encryptMessageBytes.Length);
                        return bts;
                    }
                }
            }
    
            public Byte[] Decrypt(Byte[] encryptionData)
            {
                using (var aesProvider = new AesCryptoServiceProvider())
                {
                    using (var stream = new MemoryStream())
                    {
                        var iv = new Byte[16];
                        Array.Copy(encryptionData, 0, iv, 0, iv.Length);
                        using (var cryptoStream = new CryptoStream(
                            stream,
                            aesProvider.CreateDecryptor(this.aesKey, iv),
                            CryptoStreamMode.Write))
                        {
                            cryptoStream.Write(encryptionData, IV.Length, encryptionData.Length - IV.Length);
                        }
                        return stream.ToArray();
                    }
                }
            }
    
            public String EncryptString(String plainString)
            {
                var buffer = Encoding.UTF8.GetBytes(plainString);
                var encryptMessageBytes = this.Encrypt(buffer);
                return Convert.ToBase64String(encryptMessageBytes);
            }
    
            public String DecryptString(String encryptedString)
            {
                var buffer = Convert.FromBase64String(encryptedString);
                var decryptMessageBytes = this.Decrypt(buffer);
                return Encoding.UTF8.GetString(decryptMessageBytes);
            }
        }
    

      

  • 相关阅读:
    SpringBoot系列: Pebble模板引擎语法介绍
    SpringBoot系列: Pebble模板引擎
    SpringBoot系列: CommandLineRunner接口的用处
    SpringBoot系列: 设计Restful风格的API
    SpringBoot系列: 所有配置属性和官方文档
    Spring Security 之API 项目安全验证(基于basic-authentication)
    Spring Security 之方法级的安全管控
    SpringBoot系列: 使用 Swagger 生成 API 文档
    SpringBoot系列: Web应用鉴权思路
    SpringBoot系列: RestTemplate 快速入门
  • 原文地址:https://www.cnblogs.com/qindy/p/6664401.html
Copyright © 2011-2022 走看看