package com.pingan.main;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import org.apache.commons.codec.binary.Base64;
/**
* DES加密介绍 DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,
* 后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,
* 24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现 。
* 注意:DES加密和解密过程中,密钥长度都必须是8的倍数
*/
public class LoginDesUtil {
public LoginDesUtil() {
}
// 测试
public static void main(String args[]) throws Exception {
String plaintext = "that is the New game!";
System.out.println("URLEncode前:" + plaintext);
String key = "T0FgyDSM";
plaintext=URLEncoder.encode(plaintext,"UTF-8");
String ciphertext = LoginDesUtil.encryptDES(plaintext, key);
System.out.println("明文:" + plaintext);
System.out.println("密钥:" + key);
System.out.println("密文:" + ciphertext);
System.out.println("解密后:" + LoginDesUtil.decryptDES(ciphertext, key));
System.out.println("URLEncode后:" + URLDecoder.decode(LoginDesUtil.decryptDES(ciphertext, key),"UTF-8"));
}
private static byte[] iv = { 1, 4, 7, 8, 5, 2, 6, 3 };
public static String encryptDES(String encryptString, String encryptKey)
throws Exception {
IvParameterSpec zeroIv = new IvParameterSpec(iv);
SecretKey key = generateKey(encryptKey);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
byte[] encryptedData = cipher.doFinal(encryptString.getBytes());
return Base64.encodeBase64String(encryptedData);
}
public static String decryptDES(String decryptString, String decryptKey)
throws Exception {
byte[] byteMi = Base64.decodeBase64(decryptString);
IvParameterSpec zeroIv = new IvParameterSpec(iv);
SecretKey key = generateKey(decryptKey);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
byte decryptedData[] = cipher.doFinal(byteMi);
return new String(decryptedData);
}
public static SecretKey generateKey(String secretKey) throws NoSuchAlgorithmException{
KeyGenerator _generator = KeyGenerator.getInstance("DES");
//防止linux下 随机生成key
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" );
secureRandom.setSeed(secretKey.getBytes());
_generator.init(56,secureRandom);
// 生成密钥
return _generator.generateKey();
}
}
分享到:
相关推荐
使用RSA非对称加密完成JavaScript前端RSA加密和分段加解密,最近研究了RSA非对称加密,关于什么是RSA,网上各种文章一搜一大把,但是关于如何使用RSA完成前端的组合加密解密,东西就非常少了,并且由于RSA的特性,一...
《超级加解密转换工具:全面解析加解密软件的功能与应用》 在数字化时代,信息安全成为了个人和企业关注的焦点。"超级加解密转换工具"作为一个专业的加解密软件,它集成了多种功能,旨在帮助用户快速、高效地处理与...
DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 位密钥对 64 位数据块进行加密。下面是 DES 加密解密算法的 C 语言实现的知识点总结。 字节与二进制转换 在...
“易飞用户加密解密”可能指的是易飞公司提供的一个针对用户数据进行加解密的服务或工具,如EFPASS.exe这个文件所示,它可能是一个执行程序,用于用户数据的安全管理。 三、加密算法 易飞用户加密解密可能采用了...
在本文中,我们将深入探讨如何在SpringBoot中实现接口的加密解密统一处理,以及如何通过自定义注解来灵活控制加密解密的执行。 首先,我们创建两个自定义注解,`DecryptRequest`和`EncryptResponse`,用于标识哪些...
双向,可解密 加密字符串 加密字符串 密钥为系统默认 加密文件 解密字符串 解密文件 128位MD5算法加密字符串 128位MD5算法加密Byte数组 32位MD5加密 Base64加密 Base64解密 DES加密/解密类。 加密 加密数据 解密 ...
"文件加解密软件"就是一种工具,旨在确保用户能够保护他们的敏感信息,防止未经授权的访问。这种软件通常提供了简单易用的功能,使得普通用户也能轻松进行文件的加密和解密操作。 加密软件的主要功能是通过特定的...
加解密算法在信息技术领域扮演着至关重要的角色,它们确保数据的安全传输,保护用户的隐私,以及维护网络服务的完整性。本文将深入探讨300种常见的加解密算法,涵盖其基本原理、分类、应用及安全性。 首先,加解密...
Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...
在VB6.0环境下,开发一个能够实现AES(Advanced Encryption Standard)加解密功能的模块是信息安全中的一个重要实践。AES是一种广泛使用的块密码标准,它提供了强效的加密能力,适用于保护敏感数据,如个人隐私、...
现在很多做透明加解密的初学者都比较困惑,不知从何下手,我也是如此,从什么都不会开始,慢慢肯文件系统内幕,到OSR上面请教,四个月的时间还是收获颇丰。其实真正研究以后会发现,很多都是体力活,要不断的去跟踪...
在JavaScript环境中,DES加解密可以用于保护敏感数据,如用户密码、API密钥等,确保在网络传输中数据的安全性。 在JavaScript中实现DES加解密,通常需要借助库,如`crypto-js`。这个库提供了多种加密算法,包括DES...
标题中的“3DES加密解密工具”指的是一个用于执行三重数据加密标准(3DES,Triple DES)的软件工具,这种工具通常用于保护敏感数据的安全,确保信息在传输过程中的机密性。3DES是DES(Data Encryption Standard,...
在Qt中,我们可以利用QCryptographicHash、QByteArray和QBuffer等类来实现AES加密和解密。 1. **AES加密算法**: AES有三种不同的密钥长度,即128位(AES_128)、192位(AES_192)和256位(AES_256)。这些长度的选择直接...
本篇文章将详细探讨在C++中实现3DES和Base64加解密的技术要点。 3DES(Triple Data Encryption Algorithm)是一种对称加密算法,它是DES(Data Encryption Standard)的加强版。DES使用56位的密钥,3DES通过三次...
《超级加解密转换工具SuperSoft深度解析》 在信息技术高速发展的今天,数据安全与隐私保护成为了人们关注的焦点。密码学,作为信息安全的核心技术,为数据加密与解密提供了坚实的理论基础。在这个背景下,"超级加...
本项目是使用Visual C++实现3DES加解密功能的一个实例,下面将详细介绍3DES算法及其在Visual C++中的实现。 3DES,全称为三重DES,是对DES(Data Encryption Standard)的加强版。DES是一种块密码,采用64位的数据...
提供的`XXteaEncrypt.exe`是一个基于OpenSSL的加密解密工具,用户可以选择使用XXtea或AES算法,输入相应的密钥和签名,对单个文件或整个目录下的所有文件进行加解密操作。这个工具简化了加密过程,方便开发者和用户...
实用C#加解密工具集,拿来即用。 包含以下示例代码: SM2、SM3、SM4国密加解密; RSA加解密、签名、验签(XML、PEM密钥格式); DES加解密; BASE64编解码,HEX编解码,MD5加密; 生成GUID,生成唯一KEY。
《深入理解ENC文件加密解密工具:以PrimaSoft Encryption Utility为例》 在信息安全日益重要的今天,文件加密解密工具成为保护数据隐私的关键工具。"ENC文件加密解密工具",特别是PrimaSoft Encryption Utility,是...