zoukankan      html  css  js  c++  java
  • 整理封装的加密解密类,使用DES

    using System;

    using System.Security;
    using System.Security.Cryptography;
    using System.IO;
    namespace TexSelect
    {
        
    /// <summary>
        
    /// 加密解密类
        
    /// </summary>

        public class DESCoding
        
    {
            
    public DESCoding()
            
    {
                
    //
                
    // TODO: 在此处添加构造函数逻辑
                
    //
            }

            
    /// <summary>
            
    /// 密钥,已经赋默认值,可改
            
    /// </summary>

            private string key_64="VavicApp";
            
    /// <summary>
            
    /// 密钥,已经赋默认值,可改
            
    /// </summary>

            private string iv_64="VavicApp";

            
    /// <summary>
            
    /// 密钥
            
    /// </summary>

            public string KEY_64
            
    {
                
    get{return key_64;}
                
    set{key_64=value;}
            }

            
    /// <summary>
            
    /// 密钥
            
    /// </summary>

            public string IV_64
            
    {
                
    get{return iv_64;}
                
    set{iv_64=value;}
            }


            
    /// <summary>
            
    /// 加密方法
            
    /// </summary>
            
    /// <param name="data">要加密的字符串</param>
            
    /// <param name="KEY_64">密钥</param>
            
    /// <param name="IV_64">密钥</param>
            
    /// <returns>加密后的字符串</returns>

            public string Encode(string data,string KEY_64,string IV_64)
            
    {
                
    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
                
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

                DESCryptoServiceProvider cryptoProvider 
    = new DESCryptoServiceProvider();
                
    int i = cryptoProvider.KeySize;
                MemoryStream ms 
    = new MemoryStream();
                CryptoStream cst 
    = new CryptoStream(ms,cryptoProvider.CreateEncryptor(byKey,byIV),CryptoStreamMode.Write);
       
                StreamWriter sw 
    = new StreamWriter(cst);
                sw.Write(data);
                sw.Flush();
                cst.FlushFinalBlock();
                sw.Flush();
                
    return Convert.ToBase64String(ms.GetBuffer(),0,(int)ms.Length);
            }

            
    /// <summary>
            
    /// 加密方法
            
    /// </summary>
            
    /// <param name="data">要加密的字符串</param>
            
    /// <returns>加密后的字符串</returns>

            public string Encode(string data)
            
    {
                
    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(this.KEY_64);
                
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(this.IV_64);

                DESCryptoServiceProvider cryptoProvider 
    = new DESCryptoServiceProvider();
                
    int i = cryptoProvider.KeySize;
                MemoryStream ms 
    = new MemoryStream();
                CryptoStream cst 
    = new CryptoStream(ms,cryptoProvider.CreateEncryptor(byKey,byIV),CryptoStreamMode.Write);
       
                StreamWriter sw 
    = new StreamWriter(cst);
                sw.Write(data);
                sw.Flush();
                cst.FlushFinalBlock();
                sw.Flush();
                
    return Convert.ToBase64String(ms.GetBuffer(),0,(int)ms.Length);
            }


            
    /// <summary>
            
    /// 解密方法
            
    /// </summary>
            
    /// <param name="data">要解密的字符串</param>
            
    /// <param name="KEY_64">密钥</param>
            
    /// <param name="IV_64">密钥</param>
            
    /// <returns>解密后的字符串</returns>

            public string Decode(string data,string KEY_64,string IV_64)
                                 
            
    {   
                
    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
                
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);        
                
    byte[] byEnc;
                
    try                    
                
    {
                    byEnc 
    = Convert.FromBase64String(data);
                }
                    
                
    catch               
                
    {
                    
    return null;
                }
        
                DESCryptoServiceProvider cryptoProvider 
    = new DESCryptoServiceProvider();
                MemoryStream ms 
    = new MemoryStream(byEnc);
                CryptoStream cst 
    = new CryptoStream(ms,cryptoProvider.CreateDecryptor(byKey,byIV),CryptoStreamMode.Read);
                StreamReader sr 
    = new StreamReader(cst);
                
    return sr.ReadToEnd();
            }

            
    /// <summary>
            
    /// 解密方法
            
    /// </summary>
            
    /// <param name="data">要解密的字符串</param>
            
    /// <returns>解密后的字符串</returns>

            public string Decode(string data)
                                 
            
    {   
                
    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(this.KEY_64);
                
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(this.IV_64);        
                
    byte[] byEnc;
                
    try                    
                
    {
                    byEnc 
    = Convert.FromBase64String(data);
                }
                    
                
    catch               
                
    {
                    
    return null;
                }
        
                DESCryptoServiceProvider cryptoProvider 
    = new DESCryptoServiceProvider();
                MemoryStream ms 
    = new MemoryStream(byEnc);
                CryptoStream cst 
    = new CryptoStream(ms,cryptoProvider.CreateDecryptor(byKey,byIV),CryptoStreamMode.Read);
                StreamReader sr 
    = new StreamReader(cst);
                
    return sr.ReadToEnd();
            }

        }



    }

    添加了两个密钥属性,可以自定义赋值,也可以使用自带的默认密钥,使用默认的密钥可以使用简单的加密解密方法,省事.

  • 相关阅读:
    mysqlp批量替换的sql语句
    Paypal 支付功能的 C# .NET / JS 实现
    Layui table 组件的使用:初始化加载数据、数据刷新表格、传参数
    WinForm DataGridView 绑定泛型List(List<T>)/ArrayList不显示的原因和解决
    entity framework codefirst 用户代码未处理DataException,InnerException基础提供程序在open上失败,数据库生成失败
    《设计模式》一书中的23种设计模式
    C++程序实例唯一方案,窗口只打开一次,程序只打开一次
    重构——与设计模式的恋情
    重构——一个小例子
    C#通过调用WinApi打印PDF文档类,服务器PDF打印、IIS PDF打印
  • 原文地址:https://www.cnblogs.com/telephoner/p/236976.html
Copyright © 2011-2022 走看看