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
  • 相关阅读:
    POJ 3267 The Cow Lexicon(动态规划)
    POJ 1125 Stockbroker Grapevine(最短路径Floyd算法)
    HDU 2374 || SDUT2386 A Game with Marbles(简单题)
    JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
    基于SNMP的MIB库访问实现的研究
    一个兼容大多数浏览器 的 图片滚动的js
    C#获取本地计算机名,IP,MAC地址,硬盘ID
    中文首字母搜素的实现 sql函数
    xml文档的加密与解密
    修改Windows 2003 server远程桌面端口3389
  • 原文地址:https://www.cnblogs.com/xzhblogs/p/5799019.html
Copyright © 2011-2022 走看看