`

Java加密C#解密 DES算法

 
阅读更多

Java加密算法:

	public static String encrypt(String value) {
		String result = "";
		try {
			value = java.net.URLEncoder.encode(value, "utf-8");
			result = toHexString(encrypt(value, PASSWORD_CRYPT_KEY)).toUpperCase();
		} catch (Exception ex) {
			ex.printStackTrace();
			return "";
		}
		return result;
	}


	public static String toHexString(byte b[]) {
		StringBuffer hexString = new StringBuffer();
		for (int i = 0; i < b.length; i++) {
			String plainText = Integer.toHexString(0xff & b[i]);
			if (plainText.length() < 2)
				plainText = "0" + plainText;
			hexString.append(plainText);
		}
		return hexString.toString();
	}

	public static byte[] encrypt(String message, String key) throws Exception {
		Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
		DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("ASCII"));
		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
		SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
		IvParameterSpec iv = new IvParameterSpec(key.getBytes("ASCII"));
		cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
		return cipher.doFinal(message.getBytes("UTF-8"));
	}

 

C#解密代码:

  // str 待解密的密文字符串
        // key 密钥
        //解密后明文字符串
        public static string Decode(string str, string key)
        {
            try
            {
                DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
                provider.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8));
                provider.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8));
                byte[] buffer = new byte[str.Length / 2];
                for (int i = 0; i < (str.Length / 2); i++)
                {
                    int num2 = Convert.ToInt32(str.Substring(i * 2, 2), 0x10);
                    buffer[i] = (byte)num2;
                }
                MemoryStream stream = new MemoryStream();
                CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write);
                stream2.Write(buffer, 0, buffer.Length);
                stream2.FlushFinalBlock();
                stream.Close();
                return  System.Web.HttpUtility.UrlDecode(Encoding.GetEncoding("UTF-8").GetString(stream.ToArray()));
            }
            catch (Exception) { return "解密失败……"; }
        }

 

分享到:
评论

相关推荐

    Java加密C#解密 DES算法.doc

    文档"Java加密C#解密 DES算法.doc"主要涉及了两个编程语言——Java和C#之间使用DES(Data Encryption Standard)算法进行加密和解密的实现。DES是一种经典的对称加密算法,它使用一个56位的密钥来对数据进行加密和...

    java和C#通用des3加解密

    标题中的“java和C#通用des3加解密”指的是在Java和C#这两种不同的编程语言中实现DES(Data Encryption Standard)的加强版——3DES(Triple DES)加解密算法。3DES是一种广泛使用的对称加密算法,通过三次应用DES的...

    C#和Java实现互通的RSA&DES加解密算法

    本话题主要关注如何在C#和Java之间通过RSA和DES加密算法实现数据的安全互通。RSA是一种非对称加密算法,适用于小量数据加密,如密钥交换;而DES是对称加密算法,适合大量数据的快速加密,但安全性相对较低。 首先,...

    JS加密C#解密

    "JS加密C#解密"的主题涉及前端JavaScript进行数据加密,然后在后端.NET环境中进行解密的技术方案。这种做法的主要目的是确保在网络传输过程中,敏感信息不被窃取或篡改,增强系统的安全性。 首先,我们需要了解...

    c#3DES双倍长加密解密

    c#的3DES加密解密强制要求不能使用简单的密钥,这里按照3DES双倍长的算法原理,实现双倍长的加密解密

    javascript前端DES加密,VB.NET、C#后端服务器解密

    但需要注意,DES算法的安全性现在被认为较低,对于更高级的安全需求,AES(高级加密标准)通常是个更好的选择。 压缩包中的"环境说明.txt"可能是关于开发环境或运行环境的说明,"VB_DES"和"C_DES"可能是VB.NET和C#...

    C# DES算法加密解密源码

    以上就是C#中使用DES算法进行加密解密的基本步骤和关键知识点。在实际项目中,你可以根据需求对这些代码进行调整,比如添加错误处理、优化性能等。在www.NewXing.com提供的文件中,可能包含了完整的示例代码,供你...

    Java和C#通过DES加密得到相同数据

    1. DES算法简介: DES是一种块加密算法,它将64位的数据块作为输入,并使用56位的密钥进行加密和解密。经过16轮迭代运算,包括置换、异或和子密钥生成等步骤,将原始数据转换为不可读的密文。由于原始DES的密钥较短...

    文件和文件夹的加密和解密工具(Des算法)

    当您使用DES算法加密文件或文件夹时,您需要先生成一个密钥,这个密钥只有拥有者知道。加密过程会将明文数据(未加密的数据)转换为无法读取的密文,只有使用正确的密钥才能解密回原始内容。在Windows、Linux或Mac等...

    DES加密DEMO(C#与JAVA)

    本DEMO提供了C#和JAVA两种编程语言下的DES加密和解密实现,这对于理解DES算法及其在实际开发中的应用非常有帮助。 1. **DES算法原理** - **结构**:DES算法基于Feistel网络,它将明文分为左右两半,通过一系列的...

    c#编写关于AES与DES加密算法

    本资源提供了C#语言实现AES与DES加密算法的示例代码,包括加密和解密函数的实现。AES(Advanced Encryption Standard,高级加密标准)和DES(Data Encryption Standard,数据加密标准)都是常用的对称加密算法,广泛...

    DES加密算法,JS加密,C#解密

    在前后端交互中,如果前端使用JS加密数据,而后端使用C#解密,需要确保两者的加密参数(密钥和IV)保持一致。同时,由于JS是客户端代码,密钥不应直接暴露在前端,通常的做法是将加密后的数据和密钥的散列值发送到...

    C#的3DES的加密与解密算法

    本文将深入探讨C#环境下如何实现3DES的加密与解密过程。 3DES是DES(Data Encryption Standard)的一个增强版,它通过三次应用相同的密钥来提高安全性。这种算法的主要思想是将原始的DES加密过程执行三次,增强了...

    c++和c#同时实现DES加密解密算法

    DES算法主要由以下四个步骤组成:初始置换(IP)、密钥扩展、16轮Feistel网络和逆初始置换(IP^-1)。每轮Feistel网络包括分半、异或、函数F和交换操作。其中,函数F是基于密钥的非线性转换。 在C++中实现DES,可以...

    C#des对文件进行加密解密

    首先,了解DES算法的基础知识。DES是一种块加密算法,每个数据块大小为64位,实际用于加密的有效数据为56位,因为8位用于奇偶校验。它采用了一种称为Feistel网络的结构,通过多次迭代和密钥扩展来完成加密过程。DES...

    Delphi7与C#实现Des加解密互通Demo,全网找遍只次一份

    标题中的“Delphi7与C#实现Des加解密互通Demo”指的是一个示例项目,该项目旨在演示如何在Delphi 7和C#之间进行DES加密和解密操作,确保两个环境下的数据一致性。全网找遍只此一份,表明这个示例可能比较罕见且具有...

    c# 可逆 加密 解密算法

    - **3DES(Triple DES)**: 通过多次使用DES算法来提高安全性。 - **AES(Advanced Encryption Standard)**: 目前最常用的一种对称加密标准,支持128、192和256位的密钥长度。 ##### 2.2 C#中对称加密支持 C#通过`...

    C# DES加密解密

    综上所述,C#中的DES加密解密涉及到理解DES算法原理、使用`System.Security.Cryptography.DES`类、设置密钥和初始化向量、执行加密和解密操作等步骤。在实际项目中,需要根据需求选择合适的加密算法并注意安全问题。

    C#实现DES加解密完整类源码

    - **DES算法**:基于Feistel结构,通过多次迭代实现数据的加密和解密。 - **密钥长度**:DES的密钥长度是56位,但通常表示为64位,其中8位是校验位,不参与加密过程。 2. **C#中的System.Security.Cryptography...

    C++C#互通DES加密算法

    标题 "C++C#互通DES加密算法" 涉及的是在C++和C#编程语言之间使用DES(Data Encryption Standard)加密算法进行数据安全通信的技术。DES是一种经典的对称加密算法,它基于一个56位的密钥来对64位的数据块进行加密和...

Global site tag (gtag.js) - Google Analytics