zoukankan      html  css  js  c++  java
  • [C#]DES再一例(转)

    public class Encrypt
    {
    
        internal string ToEncrypt(string encryptKey, string str)
        {
            try
            {
                byte[] P_byte_key = //将密钥字符串转换为字节序列  
                    Encoding.Unicode.GetBytes(encryptKey);
                byte[] P_byte_data = //将字符串转换为字节序列  
                    Encoding.Unicode.GetBytes(str);
                MemoryStream P_Stream_MS = //创建内存流对象  
                    new MemoryStream();
                CryptoStream P_CryptStream_Stream = //创建加密流对象  
                    new CryptoStream(P_Stream_MS, new DESCryptoServiceProvider().
                   CreateEncryptor(P_byte_key, P_byte_key), CryptoStreamMode.Write);
                P_CryptStream_Stream.Write(//向加密流中写入字节序列  
                    P_byte_data, 0, P_byte_data.Length);
                P_CryptStream_Stream.FlushFinalBlock();//将数据压入基础流  
                byte[] P_bt_temp =//从内存流中获取字节序列  
                    P_Stream_MS.ToArray();
                P_CryptStream_Stream.Close();//关闭加密流  
                P_Stream_MS.Close();//关闭内存流  
                return //方法返回加密后的字符串  
                    Convert.ToBase64String(P_bt_temp);
            }
            catch (CryptographicException ce)
            {
                throw new Exception(ce.Message);
            }
        }
    
        internal string ToDecrypt(string encryptKey, string str)
        {
            try
            {
                byte[] P_byte_key = //将密钥字符串转换为字节序列  
                    Encoding.Unicode.GetBytes(encryptKey);
                byte[] P_byte_data = //将加密后的字符串转换为字节序列  
                    Convert.FromBase64String(str);
                MemoryStream P_Stream_MS =//创建内存流对象并写入数据  
                    new MemoryStream(P_byte_data);
                CryptoStream P_CryptStream_Stream = //创建加密流对象  
                    new CryptoStream(P_Stream_MS, new DESCryptoServiceProvider().
                    CreateDecryptor(P_byte_key, P_byte_key), CryptoStreamMode.Read);
                byte[] P_bt_temp = new byte[200];//创建字节序列对象  
                MemoryStream P_MemoryStream_temp =//创建内存流对象  
                    new MemoryStream();
                int i = 0;//创建记数器  
                while ((i = P_CryptStream_Stream.Read(//使用while循环得到解密数据  
                    P_bt_temp, 0, P_bt_temp.Length)) > 0)
                {
                    P_MemoryStream_temp.Write(//将解密后的数据放入内存流  
                        P_bt_temp, 0, i);
                }
                return //方法返回解密后的字符串  
                    Encoding.Unicode.GetString(P_MemoryStream_temp.ToArray());
            }
            catch (CryptographicException ce)
            {
                throw new Exception(ce.Message);
            }
        }
    }

    调用

    private void btn_Encrypt_Click(object sender, EventArgs e)
            {
                if (txt_password.Text.Length == 4)//判断加密密钥长度是否正确
                {
                    try
                    {
                        txt_EncryptStr.Text = //调用实例ToEncrypt方法得到加密后的字符串
                            new Encrypt().ToEncrypt(
                            txt_password.Text, txt_str.Text);
                        //Encrypt P_Encrypt = new Encrypt();
                        //P_Encrypt.ToEncrypt(""
                    }
                    catch (Exception ex)//捕获异常
                    {
                        MessageBox.Show(ex.Message);//输出异常信息
                    }
                }
                else
                {
                    MessageBox.Show("密钥长度不符!", "提示");//提示用户输入密钥长度不正确
                }
            }
            private void btn_UnEncrypt_Click(object sender, EventArgs e)
            {
                if (txt_password2.Text.Length == 4)//判断加密密钥长度是否正确
                {
                    try
                    {
                        txt_str2.Text = //调用ToDecrypt方法得到解密后的字符串
                            new Encrypt().ToDecrypt(
                            txt_password2.Text, txt_EncryptStr2.Text);
                    }
                    catch (Exception ex)//捕获异常
                    {
                        MessageBox.Show(ex.Message);//输出异常信息
                    }
                }
                else
                {
                    MessageBox.Show("密钥长度不符!", "提示");//提示用户输入密钥长度不正确
                }
            }

    转自 

    http://blog.csdn.net/finlay_liu/article/details/8272855

  • 相关阅读:
    SAP CRM WebClient UI的Delta处理机制介绍
    三种动态控制SAP CRM WebClient UI assignment block显示与否的方法
    SAPGUI软件里做的设置,本地操作系统保存的具体位置
    SAP CRM附件在应用服务器上的存储原理解析
    FLINK实例(2):CONNECTORS(1)如何正确使用 Flink Connector?
    shell脚本执行报错:/bin/bash^M: bad interpreter: No such file or directory
    FLINK实例(6): CONNECOTRS(5)Flink Kafka Connector 与 Exactly Once 剖析
    java.lang.IllegalStateException(Connection to remote Spark driver was lost)
    java.security.cert.CertificateNotYetValidException: NotBefore
    Hadoop问题:org.apache.hadoop.ipc.RpcException: RPC response exceeds maximum data length 错误
  • 原文地址:https://www.cnblogs.com/boneking/p/3472542.html
Copyright © 2011-2022 走看看