`
liyf155
  • 浏览: 126077 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java和C#交叉加密解密方法(DES)(二)

    博客分类:
  • C#
阅读更多
接着Java和C#交叉加密解密方法(DES)(一):

C#代码:

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.Configuration;   
using System.Web;  
using System.IO;

namespace DES
{
    public partial class Form1 : Form
    {
        private string DES_Key = "20100728";  

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string jiami = textBox3.Text;
            this.textBox1.Text = DESEnCode(jiami);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string jiemi = textBox1.Text;
            textBox2.Text = DESDeCode(jiemi);
        }

        #region DESEnCode DES加密
        public string DESEnCode(string pToEncrypt)
        {   
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(pToEncrypt);
  
            des.Key = ASCIIEncoding.ASCII.GetBytes(DES_Key);
            des.IV = ASCIIEncoding.ASCII.GetBytes(DES_Key);
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);

            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();

            StringBuilder ret = new StringBuilder();
            foreach (byte b in ms.ToArray())
            {
                ret.AppendFormat("{0:X2}", b);
            }
            ret.ToString();
            return ret.ToString();
        }
        #endregion

        #region DESDeCode DES解密
        public string DESDeCode(string pToDecrypt)
        {  
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();

            byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
            for (int x = 0; x < pToDecrypt.Length / 2; x++)
            {
                int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
                inputByteArray[x] = (byte)i;
            }

            des.Key = ASCIIEncoding.ASCII.GetBytes(DES_Key);
            des.IV = ASCIIEncoding.ASCII.GetBytes(DES_Key);
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();

            StringBuilder ret = new StringBuilder();

            return System.Text.Encoding.UTF8.GetString(ms.ToArray());
        }
        #endregion

    }
}


经过测试,可运行!附件为C#的打包文件。下载到本地运行后可以与上一篇Java的加密解密结果互相调试,得到一致的结果。
  • DES.zip (31.9 KB)
  • 下载次数: 31
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics