package com.tiancom.pas.util;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class CryptoUtil {
private static final byte[] DES_KEY= {21, 1, -110, 82, -32, -85, -128, -65};
/**
* 日志对象,参见org.apache.commons.logging.Log
*/
private static Log log= LogFactory.getLog( CryptoUtil.class);
/**
* 不允许初始化
*/
private CryptoUtil(){
}
/**
* 数据加密,算法(DES)
* @param data 要进行加密的数据
* @return 加密后的数据
*/
public static String encrypt( String data){
String encryptedData= null;
try {
//DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
DESKeySpec deskey = new DESKeySpec(DES_KEY);
//创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" );
SecretKey key = keyFactory.generateSecret( deskey);
//加密对象
Cipher cipher = Cipher.getInstance( "DES");
cipher.init( Cipher.ENCRYPT_MODE, key, sr);
//加密,并把字节数组编码成字符串
encryptedData = new sun.misc.BASE64Encoder().encode(
cipher.doFinal( data.getBytes()));
} catch (Exception e) {
log.error( "加密错误,错误信息:", e);
throw new RuntimeException( "加密错误,错误信息:", e);
}
return encryptedData;
}
/**
* 数据解密,算法(DES)
* @param cryptData 加密数据
* @return 解密后的数据
*/
public static String decrypt( String cryptData){
String decryptedData= null;
try {
//DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
DESKeySpec deskey = new DESKeySpec(IConst.SYSTEM.DES_KEY);
//创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance( "DES" );
SecretKey key = keyFactory.generateSecret( deskey);
//解密对象
Cipher cipher = Cipher.getInstance( "DES");
cipher.init( Cipher.DECRYPT_MODE, key, sr);
//把字符串解码为字节数组,并解密
decryptedData = new String( cipher.doFinal(
new sun.misc.BASE64Decoder().decodeBuffer(cryptData)));
} catch (Exception e) {
log.error( "解密错误,错误信息:", e);
throw new RuntimeException( "解密错误,错误信息:", e);
}
return decryptedData;
}
}
分享到:
相关推荐
标题中的“Java加密工具类”指的是使用Java编程语言编写的用于数据加密和解密的类库。在Java中,加密通常涉及到对敏感信息进行保护,防止未经授权的访问或窃取。这种工具类可能会包含多种加密算法,如AES(高级加密...
java加密工具类。提供各种加密方法,加密方法有:aes,des,md5,sha等加密方式
des是java开发中比较常见的加密方式,多用于加密要求不是很严格的地方,...将加密方式封装成一个工具类,便于使用,可指定密钥或使用默认密钥,可指定字符或使用默认字符,用法简单灵活,全文中文注释,易于读和修改。
用Java实现的一个可逆加密工具类,很不错!我在自己的项目已经使用。
加密工具类 包含md5加密 base加密解密 md5加密 aes加密解密 urlencoude
下面我们将详细探讨这些加密工具类在Java中的应用及其重要性。 首先,**AES** 是一种广泛使用的块密码,具有128位的密钥长度,提供了强大的加密能力。AES分为多个轮的替换和置换操作,使其对攻击具有很高的抵抗性。...
Java Md5加密工具类
SmUtil java实现sm2加密工具类 // 获取一条SM2曲线参数 X9ECParameters sm2ECParameters = GMNamedCurves.getByName("sm2p256v1"); // 构造ECC算法参数,曲线方程、椭圆曲线G点、大整数N ECDomainParameters ...
"JAVAclass加密工具2.2"就是一款针对这一需求设计的软件。 这款工具提供了安全的加密机制,能够有效地隐藏和保护Java源代码,防止他人轻易获取和理解代码逻辑。加密过程通常包括混淆、压缩和加密几个步骤,使得原始...
例如,创建一个SHA1加密工具类,可以包含一个方法,接收字符串作为参数,然后返回该字符串的SHA1哈希值。以下是一个简化的示例代码片段: ```java import java.security.MessageDigest; import java.security....
在这个“RSA+AES加密工具类 Java”中,我们将深入探讨这两种加密技术以及如何在Java环境中,包括Android和Web应用,实现它们。 首先,RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,基于大整数因子分解的困难...
Java Base64加密解密方法工具类
下面将详细介绍Java中的MD5加密工具类及其使用方法。 MD5加密过程通常包括以下几个步骤: 1. **数据预处理**:将原始信息填充到固定长度,通常是512位的倍数。这通常通过在原始数据末尾添加0来实现,然后添加一个...
这里我们主要关注的是"各种java加密算法工具类",其中包括了RSA和MD5等常见的加密方法。下面我们将深入探讨这些算法及其在Java中的实现。 首先,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将...
在Java编程领域,加密工具类是开发过程中必不可少的一部分,它们用于保护数据安全,防止未经授权的访问。本资源包“常用加密工具类(JAVA).zip”提供了12个不同的加密和排序工具类,以及一个log4j配置文件,旨在...
本文将详细介绍标题中提到的"加密算法工具类",包括MD5、DES3、DES、AES、BASE64以及SHA这七种常见的加密算法,并讨论它们在Java环境中的应用。 首先,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数...
设计到的方法如下: DigitalSign init getInstance SignMsgByRelativePath SignMsgByInputStream signMsgByAbsolutePath verifyMsgByInputSteam verifyMsgByAbsolutePath verifyMsgByRelativePath ...
这是一个Java的工具类,进行加密操作的时候调用该类的方法就可以,工具类里面写了一个main,拿啦直接用就行。
可以将CLASS文件加密,用反编译工具反编译不过来. 不是混淆器,是加密.比混淆器好很多. ...agentlib:c:\windows\classloader %JAVA_OPTS%,保存setenv.bat文件,重新启动Tomcat后就可以正确加载加密类了。
JavaMD5加密工具类 algorithm = MessageDigest.getInstance("MD5"); algorithm.reset(); algorithm.update(s.getBytes("UTF-8")); byte[] messageDigest = algorithm.digest(); return messageDigest;