import javax.crypto.*;
import
javax.crypto.spec.DESKeySpec;
import
java.security.NoSuchAlgorithmException;
import
java.security.InvalidKeyException;
import
java.security.SecureRandom;
import
java.security.spec.InvalidKeySpecException;
/**
*
通过DES加密解密实现一个String字符串的加密和解密.
*
* @author badpeas
*
*/
public
class EncryptDecryptData {
public static void main(String[] args)
throws NoSuchAlgorithmException,
InvalidKeyException,
NoSuchPaddingException,
InvalidKeySpecException,
IllegalBlockSizeException,
BadPaddingException {
//
1.1 >>> 首先要创建一个密匙
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
//
为我们选择的DES算法生成一个KeyGenerator对象
KeyGenerator kg =
KeyGenerator.getInstance("DES");
kg.init(sr);
//
生成密匙
SecretKey key = kg.generateKey();
// 获取密匙数据
byte rawKeyData[] = key.getEncoded();
System.out.println("密匙===>" + rawKeyData);
String str =
"hi.baidu.com/badpeas"; // 待加密数据
// 2.1 >>> 调用加密方法
byte[] encryptedData = encrypt(rawKeyData, str);
// 3.1
>>> 调用解密方法
decrypt(rawKeyData, encryptedData);
}
/**
* 加密方法
*
* @param rawKeyData
*
@param str
* @return
* @throws InvalidKeyException
*
@throws NoSuchAlgorithmException
* @throws
IllegalBlockSizeException
* @throws BadPaddingException
* @throws
NoSuchPaddingException
* @throws InvalidKeySpecException
*/
public static byte[] encrypt(byte rawKeyData[], String str)
throws InvalidKeyException, NoSuchAlgorithmException,
IllegalBlockSizeException, BadPaddingException,
NoSuchPaddingException, InvalidKeySpecException {
//
DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密匙数据创建一个DESKeySpec对象
DESKeySpec dks = new
DESKeySpec(rawKeyData);
//
创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象
SecretKeyFactory keyFactory
= SecretKeyFactory.getInstance("DES");
SecretKey key =
keyFactory.generateSecret(dks);
// Cipher对象实际完成加密操作
Cipher
cipher = Cipher.getInstance("DES");
// 用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, key, sr);
// 现在,获取数据并加密
byte data[] = str.getBytes();
// 正式执行加密操作
byte[]
encryptedData = cipher.doFinal(data);
System.out.println("加密后===>" + encryptedData);
return
encryptedData;
}
/**
* 解密方法
*
* @param
rawKeyData
* @param encryptedData
* @throws
IllegalBlockSizeException
* @throws BadPaddingException
* @throws
InvalidKeyException
* @throws NoSuchAlgorithmException
* @throws
NoSuchPaddingException
* @throws InvalidKeySpecException
*/
public static String decrypt(byte rawKeyData[], byte[] encryptedData)
throws IllegalBlockSizeException, BadPaddingException,
InvalidKeyException, NoSuchAlgorithmException,
NoSuchPaddingException, InvalidKeySpecException {
//
DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密匙数据创建一个DESKeySpec对象
DESKeySpec dks = new
DESKeySpec(rawKeyData);
//
创建一个密匙工厂,然后用它把DESKeySpec对象转换成一个SecretKey对象
SecretKeyFactory
keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey key =
keyFactory.generateSecret(dks);
// Cipher对象实际完成解密操作
Cipher
cipher = Cipher.getInstance("DES");
// 用密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, key, sr);
// 正式执行解密操作
byte decryptedData[] = cipher.doFinal(encryptedData);
System.out.println("解密后===>" + new String(decryptedData));
return
new String(decryptedData);
}
}
---------------无奈的分割线---------------
上面的代码非常清楚,我在工作中问了实现一个url里面的数据加密和解密的操作就完成了上面的代码,原代码来源于网上,经过修改然后加上注释,是直接可以运行的,有什么不懂得请在后面跟帖.
这个是最简单的加密解密了,但是在一般情况下作用是非常大的,还有一个基于MD5的加密解密是以前做信用卡支付时做的,还没时间整理,以后发上来吧!
谢谢在网上无私奉献的coder,致敬!
PS:
刚同事提出来,密匙不能在URL间传递,这样暴露了信息,想想也对,那就把密匙写死吧.
在加密之前 byte rawKeyData[] =
"429387498234".getBytes();
这样解密方法里面也写死 byte rawKeyData[] =
"429387498234".getBytes();
调用解密方法就直接: decrypt(encryptedData);
就可以了!
这个密码也能写道项目的配置文件里面,以便随时更改!
分享到:
相关推荐
DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 位密钥对 64 位数据块进行加密。下面是 DES 加密解密算法的 C 语言实现的知识点总结。 字节与二进制转换 在...
Java 中的 3DES 加密解密示例(封装 byte 数组和 16 进制字符串互转) 在 Java 中,3DES 加密是一种常用的加密算法,它可以将明文数据转换为密文数据,以保护数据的安全性。在本示例中,我们将展示如何使用 3DES ...
这需要创建一个.NET类库项目,实现DES加密解密功能,然后在VBA中通过CreateObject或早绑定的方式调用这些函数。 以下是VB.NET中实现DES加密解密的简单示例代码: ```vbnet Imports System.IO Imports System....
以下是关于3DES加密解密算法在Java中的实现细节: 首先,为了使用3DES,Java程序需要引入特定的JAR包,这些包通常位于`JAVA_HOME/jre/lib/`目录下,包括`jce.jar`、`US_export_policy.jar`、`local_policy.jar`以及...
这篇C语言源代码实现了DES加密解密算法,特别适合于资源有限的环境,如STM32或51单片机。STM32系列是基于ARM Cortex-M内核的微控制器,而51单片机则是早期广泛应用的8位微处理器。在这些平台上,由于内存(RAM)资源...
在Java中,可以使用`javax.crypto`包来实现DES加密解密。首先,创建一个KeyGenerator对象,设置为DES算法,然后生成密钥。接着,创建Cipher对象,初始化为加密或解密模式,并使用密钥。最后,调用`doFinal()`方法...
本文将深入探讨如何使用MFC(Microsoft Foundation Classes)库实现DES(Data Encryption Standard)加密解密算法,以及如何支持文件的打开和保存操作。 DES是一种对称加密算法,由IBM在1970年代开发,并在1977年被...
2024最新DES加密解密算法(简单、易懂、超级详细)2024最新DES加密解密算法(简单、易懂、超级详细)2024最新DES加密解密算法(简单、易懂、超级详细)2024最新DES加密解密算法(简单、易懂、超级详细)2024最新DES...
在VC++环境中实现DES加密解密,你需要理解以下几个关键知识点: 1. **DES算法流程**:DES算法包括初始置换、16轮的Feistel函数和逆初始置换三个主要步骤。每轮Feistel函数中,又包含子密钥产生、异或操作、S盒替换...
des加密算法(js+java)加密与解密结果相同 包含三个文件 : des.js des.html ,用于实现前端脚本的加密与解密 des.java 用于后台的加密解密操作; 项目中正好用到,已经过验证,两个加密解密结果相同,分享给...
加密为直接输入十六进制的(消息,密钥,1);解密为(密文,密钥,2);Index=1为加密,不为1为解密
DES 算法加密算法解密算法 DES 算法概述 DES(Data Encryption Standard)是一种对称密钥块加密算法,由美国 IBM 公司的 W. Tuchman 和 C. Meyer 于 1971-1972 年研制成功。1973 年,美国国家标准局(NBS)公开...
这篇博客文章“java DES 加密解密算法(内有测试)”可能详细介绍了如何在Java中实现DES加密和解密的过程。通常,Java通过`javax.crypto`包提供DES加密的相关功能。下面我们将深入探讨DES加密解密的基本原理和Java中...
在`cipher4j-master`这个项目中,可能包含了关于DES加密解密的Java实现,包括完整的类和示例代码,帮助开发者理解和使用DES。你可以下载并研究该项目,进一步了解如何在实际应用中集成DES加密解密功能。
在描述中提到的C++实现的DES加密解密算法,主要是针对TXT文本文件进行操作的。TXT文件是一种常见的文本格式,通常用于存储纯文本信息。DES算法在处理这种文件时,会将文件内容视为二进制数据流,然后按照64位的块...
在Java中,我们可以使用javax.crypto包来实现DES加密和解密。首先,我们需要创建一个密钥,这通常通过`KeyGenerator`类完成。以下是一个创建DES密钥的例子: ```java KeyGenerator keyGen = KeyGenerator....
转 JAVA加密解密DES对称加密算法.doc
总的来说,小程序与Java后端使用DES加密解密是数据安全的一种基础实践,但考虑到当前的网络安全需求,可能需要结合其他更强的加密技术以及安全策略来提升整体的安全水平。在实际应用中,还需要关注相关的法律法规,...
在Java中实现DES加密解密,你需要了解以下几个关键知识点: 1. **Java Cipher类**:Java提供了一个名为`Cipher`的类,它是所有加密和解密操作的核心。它实现了各种加密算法,包括DES。你可以通过`Cipher....
在给定的代码中,展示了如何在Java中实现3DES加密和解密的过程。 首先,3DES加密过程通常包括以下步骤: 1. **生成密钥**:在Java中,密钥通常通过`KeyGenerator`类生成。在提供的代码中,密钥是通过`getKey()`...