package com.liutao; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; public class Des { // 解密数据 public static String decrypt(String message, String key) throws Exception { byte[] bytesrc = convertHexString(message); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8")); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8")); cipher.init(Cipher.DECRYPT_MODE, secretKey, iv); byte[] retByte = cipher.doFinal(bytesrc); return new String(retByte); } public static byte[] encrypt(String message, String key) throws Exception { Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8")); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8")); cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv); return cipher.doFinal(message.getBytes("UTF-8")); } public static byte[] convertHexString(String ss) { byte digest[] = new byte[ss.length() / 2]; for (int i = 0; i < digest.length; i++) { String byteString = ss.substring(2 * i, 2 * i + 2); int byteValue = Integer.parseInt(byteString, 16); digest[i] = (byte) byteValue; } return digest; } public static void main(String[] args) throws Exception { String key = "19662A31"; String value = "96e79218965eb72c92a549dd5a330112"; String jiami = java.net.URLEncoder.encode(value, "utf-8").toLowerCase(); System.out.println("加密数据:" + jiami); String a = toHexString(encrypt(jiami, key)).toUpperCase(); System.out.println("加密后的数据为:" + a); //String b = java.net.URLDecoder.decode(decrypt(a, key), "utf-8"); //System.out.println("解密后的数据:" + b); } 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(); } }
代码有参考互联网
相关推荐
在Java和.NET平台上,我们可以使用内置的加密库实现DES加密和解密。本文将详细介绍如何在Java和.NET中实现互操作的DES加密解密,并提供两种不同的方法。 **方法一:使用标准库** 1. **Java实现**: - 引用`javax....
在IT行业中,跨平台通信和数据安全...总之,Java和.NET之间的加密算法交换涉及多个层面,包括选择合适的加密算法、密钥管理和数据格式转换。理解这些知识点并正确实施,能够确保在跨平台通信中的数据安全性和互操作性。
本资源提供的是一套完整的JavaScript实现,能够与ASP.NET和JAVA平台的3DES加密解密及Base64编码解码功能保持兼容。 首先,3DES的工作原理是在DES的基础上增加了一次加密过程,即使用同一个密钥进行三次加密,这大大...
在Java和.NET之间进行互通时,DES加密解密的实现是至关重要的,因为这允许两个平台之间的应用程序能够共享加密过的数据并正确地解密。下面将详细解释DES加密解密的基本原理、Java实现以及如何在Java与.NET之间进行...
本篇文章将详细讲解如何在Java、C#和PHP这三个不同的编程语言环境中实现DES加密,并确保它们之间的互通性。在实际项目中,这种跨平台的加密互通能力对于多语言系统的集成至关重要。 首先,DES是一种块加密算法,它...
首先,DES加密算法的基本原理是通过一个密钥对明文数据进行操作,将其转换为无法直接识别的密文。在Java中,我们可以利用`javax.crypto`包中的类来实现DES加密和解密。例如,`Cipher`类用于执行加密和解密操作,`...
"三平台通用加密算法"指的是可以在Java、.Net和Object-C这三个不同的开发平台上使用的相同加密逻辑。这种跨平台的兼容性使得开发人员可以更容易地在各种环境中实现一致的安全策略。 在Java中,加密通常依赖于Java ...
在Android中,我们可以使用Java的`javax.crypto`包来实现DES加密和解密。 描述中提到的".net自带的des加密是一样的",意味着Android上的DES实现与.NET框架中的DES加密算法在原理和效果上是兼容的。这意味着,如果你...
根据提供的文件信息,本文将详细解释“java.net(c#)交换加密算法(java版本)”涉及的关键概念、实现原理及代码示例。 ### 1. 加密算法概述 #### 1.1 DES (Data Encryption Standard) 算法 DES是一种对称加密...
在C#中实现DES加密主要涉及.NET Framework提供的`System.Security.Cryptography`命名空间下的`DESCryptoServiceProvider`类。以下是对C#部分代码片段的分析: ```csharp // 创建一个DES加密提供程序对象 ...
在Android平台上,我们可以通过Java的`javax.crypto`包来实现DES加密和解密。主要涉及`Cipher`类的初始化、密钥的生成以及加密解密操作。Android代码通常会使用`KeyGenerator`生成密钥,`Cipher`进行加密和解密,...
在Java中,`javax.crypto.Cipher`类可以用于实现DES加密和解密,需要配合`KeyGenerator`和`SecretKeySpec`来生成和管理密钥。 除了基础的加密技术,这个资源可能还会涉及更高级的加密算法,如AES(Advanced ...
Java中的DES(Data Encryption Standard)是一种广泛...在压缩包文件"codefans.net"中,可能包含了上述Java DES加密的完整示例代码。通过阅读和理解这些代码,开发者可以更好地掌握如何在实际项目中应用DES加密技术。
本文将深入探讨Java中关于MAC地址的校验、转换、递增以及加密的相关知识点。 1. **MAC地址格式**: MAC地址通常是一个6字节(48位)的二进制数,以16进制表示,每两个字符之间用冒号或破折号分隔,例如`00:11:22:...
在PowerBuilder中,可以使用.NET Framework或Java的加密库来实现DES加密,通过调用相应的加密函数,将敏感数据转换成不可读的形式,从而保护信息安全。 具体实现过程可能包括以下步骤: 1. 获取硬盘物理ID:使用Win...
Java加密程序源代码是用于保护数据安全的重要工具,它通过特定的算法将原始信息转换成不可读的形式,防止未经授权的访问或泄露。本程序可能涵盖了对称加密、非对称加密以及哈希函数等多种加密技术。 对称加密是最早...
常见的对称加密算法有DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption Standard)等。例如,AES具有高安全性,支持不同长度的密钥,适合大量数据的加密。 2. **非对称加密**:非...
文档"Java加密C#解密 DES算法.doc"主要涉及了两个编程语言——Java和C#之间使用DES(Data Encryption Standard)算法进行加密和解密的实现。DES是一种经典的对称加密算法,它使用一个56位的密钥来对数据进行加密和...
在提供的压缩包"codefans.net"中,可能包含了完整的Java代码示例,你可以参考这些代码来学习和实践DES加密。在学习过程中,理解加密原理、熟悉Java的加密API并结合实际项目需求,将有助于你更好地运用这些知识。
Java作为一种广泛使用的编程语言,在处理敏感信息时提供了多种加密手段。本篇文章将探讨如何使用Java进行网址加密,并分享一些实用的资源链接。 #### 二、Java加密机制详解 1. **对称加密算法**:对称加密是一种...