用C#实现Des加密和解密

Posted 软若石

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C#实现Des加密和解密相关的知识,希望对你有一定的参考价值。

using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;
using  System.Security.Cryptography;
using  System.IO;

namespace  SoftEncrypt
{
    
public partial class Form1 : Form
    
{
        
const string KEY_64 = "12345678";
        
const string IV_64 = "98765432"//注意了,是8个字符,64位 

        
public Form1()
        
{
            InitializeComponent();
        }


        
private void button1_Click(object sender, EventArgs e)
        
{
            textBox2.Text 
= Encode(textBox1.Text.Trim());

        }



        
public static string Encode(string data)
        
{
            
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);

        }


        
public static string Decode(string data)
        
{
            
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();
        }


        
private void button2_Click(object sender, EventArgs e)
        
{
            textBox1.Text 
= Decode(textBox2.Text.Trim());
        }
 

    }

}
 

以上是关于用C#实现Des加密和解密的主要内容,如果未能解决你的问题,请参考以下文章

用c语言写des加密算法

des加密 c++ java

用Rust实现DES加密/解密算法

求一个用c语言写的DES加密算法~~

des加密算法(c/c++)

java des 默认采用啥加密模式