zoukankan      html  css  js  c++  java
  • C# DES

    DES加密

    using System.Security.Cryptography;

    和AES一样只知道 ECB CBC CFB模式的用法

     static class MyDES
        {
            static PaddingMode[] padding = {
                PaddingMode.PKCS7,
                PaddingMode.ANSIX923,
                PaddingMode.ISO10126,
                PaddingMode.None,
                PaddingMode.Zeros
            };
            static public string Encrypt(string Message, string key,string IV, CipherMode Mode,int pad)
            {
                try
                {
    
                    byte[] keyBytes = Encoding.UTF8.GetBytes(key);
                    byte[] keyIV = Encoding.UTF8.GetBytes(IV); 
                    byte[] inputByteArray = Encoding.UTF8.GetBytes(Message);
    
                    DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
    
                    // java 默认的是ECB模式,PKCS5padding;c#默认的CBC模式,PKCS7padding 所以这里我们默认使用ECB方式
                    desProvider.Mode = Mode;
                    desProvider.Padding = padding[pad];
                    MemoryStream memStream = new MemoryStream();
                    CryptoStream crypStream = new CryptoStream(memStream, desProvider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write);
    
                    crypStream.Write(inputByteArray, 0, inputByteArray.Length);
                    crypStream.FlushFinalBlock();
                    return Convert.ToBase64String(memStream.ToArray());
    
                }
                catch
                {
                    MessageBox.Show("加密失败");
                    return "";
                }
    
            }
           
            static public string Decrypt(string Message, string key, string IV, CipherMode Mode,int pad)
            {
                try
                {
                    byte[] keyBytes = Encoding.UTF8.GetBytes(key);
                    byte[] keyIV = Encoding.UTF8.GetBytes(IV);
                    byte[] inputByteArray = Convert.FromBase64String(Message);
    
                    DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
    
                    // java 默认的是ECB模式,PKCS5padding;c#默认的CBC模式,PKCS7padding 所以这里我们默认使用ECB方式
                    desProvider.Mode = Mode;
                    desProvider.Padding = padding[pad];
                    MemoryStream memStream = new MemoryStream();
                    CryptoStream crypStream = new CryptoStream(memStream, desProvider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write);
    
                    crypStream.Write(inputByteArray, 0, inputByteArray.Length);
                    crypStream.FlushFinalBlock();
                    return Encoding.Default.GetString(memStream.ToArray());
                }
                catch {
                    MessageBox.Show("解密失败");
                    return "";
                }
    
            }
           
        }
    MyDES
  • 相关阅读:
    win查看所有wifi密码
    vsftp配置详解
    python3.7项目打包为一个exe
    ATT&CK实战系列——红队实战(一)
    PHP SECURITY CALENDAR 2017 (Day 9
    python3安装gmpy2
    [CISCN2019 总决赛 Day2 Web1]Easyweb(预期解)
    python2与python3共存及py2IDLE打不开的解决方案
    [BJDCTF 2nd]
    PHP SECURITY CALENDAR 2017 (Day 1
  • 原文地址:https://www.cnblogs.com/xzhblogs/p/5799019.html
Copyright © 2011-2022 走看看