`
liyinfeng56
  • 浏览: 94106 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 加密工具类

阅读更多
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编程语言编写的用于数据加密和解密的类库。在Java中,加密通常涉及到对敏感信息进行保护,防止未经授权的访问或窃取。这种工具类可能会包含多种加密算法,如AES(高级加密...

    java加密工具类.zip

    java加密工具类。提供各种加密方法,加密方法有:aes,des,md5,sha等加密方式

    java加密工具类 DESUtils

    des是java开发中比较常见的加密方式,多用于加密要求不是很严格的地方,...将加密方式封装成一个工具类,便于使用,可指定密钥或使用默认密钥,可指定字符或使用默认字符,用法简单灵活,全文中文注释,易于读和修改。

    一个可逆的Java加密工具类

    用Java实现的一个可逆加密工具类,很不错!我在自己的项目已经使用。

    java加密工具类 md5 aes base64 urlencode

    加密工具类 包含md5加密 base加密解密 md5加密 aes加密解密 urlencoude

    Java加密工具类,AES/DES/MD5/SHA/3DES

    下面我们将详细探讨这些加密工具类在Java中的应用及其重要性。 首先,**AES** 是一种广泛使用的块密码,具有128位的密钥长度,提供了强大的加密能力。AES分为多个轮的替换和置换操作,使其对攻击具有很高的抵抗性。...

    Java Md5加密工具类

    Java Md5加密工具类

    SmUtil java实现sm2加密工具类

    SmUtil java实现sm2加密工具类 // 获取一条SM2曲线参数 X9ECParameters sm2ECParameters = GMNamedCurves.getByName("sm2p256v1"); // 构造ECC算法参数,曲线方程、椭圆曲线G点、大整数N ECDomainParameters ...

    JAVAclass加密工具

    "JAVAclass加密工具2.2"就是一款针对这一需求设计的软件。 这款工具提供了安全的加密机制,能够有效地隐藏和保护Java源代码,防止他人轻易获取和理解代码逻辑。加密过程通常包括混淆、压缩和加密几个步骤,使得原始...

    SHA1(加密工具类)

    例如,创建一个SHA1加密工具类,可以包含一个方法,接收字符串作为参数,然后返回该字符串的SHA1哈希值。以下是一个简化的示例代码片段: ```java import java.security.MessageDigest; import java.security....

    RSA+AES 加密工具类 Java

    在这个“RSA+AES加密工具类 Java”中,我们将深入探讨这两种加密技术以及如何在Java环境中,包括Android和Web应用,实现它们。 首先,RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,基于大整数因子分解的困难...

    Java Base64加密解密方法工具类

    Java Base64加密解密方法工具类

    java MD5加密工具类

    下面将详细介绍Java中的MD5加密工具类及其使用方法。 MD5加密过程通常包括以下几个步骤: 1. **数据预处理**:将原始信息填充到固定长度,通常是512位的倍数。这通常通过在原始数据末尾添加0来实现,然后添加一个...

    各种java加密算法工具类

    这里我们主要关注的是"各种java加密算法工具类",其中包括了RSA和MD5等常见的加密方法。下面我们将深入探讨这些算法及其在Java中的实现。 首先,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将...

    常用加密工具类(JAVA).zip

    在Java编程领域,加密工具类是开发过程中必不可少的一部分,它们用于保护数据安全,防止未经授权的访问。本资源包“常用加密工具类(JAVA).zip”提供了12个不同的加密和排序工具类,以及一个log4j配置文件,旨在...

    加密算法工具类

    本文将详细介绍标题中提到的"加密算法工具类",包括MD5、DES3、DES、AES、BASE64以及SHA这七种常见的加密算法,并讨论它们在Java环境中的应用。 首先,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数...

    RSA工具类java加密解密非常全

    设计到的方法如下: DigitalSign init getInstance SignMsgByRelativePath SignMsgByInputStream signMsgByAbsolutePath verifyMsgByInputSteam verifyMsgByAbsolutePath verifyMsgByRelativePath ...

    MD5加密的工具类,可直接使用

    这是一个Java的工具类,进行加密操作的时候调用该类的方法就可以,工具类里面写了一个main,拿啦直接用就行。

    JAVA加密工具

    可以将CLASS文件加密,用反编译工具反编译不过来. 不是混淆器,是加密.比混淆器好很多. ...agentlib:c:\windows\classloader %JAVA_OPTS%,保存setenv.bat文件,重新启动Tomcat后就可以正确加载加密类了。

    JavaMD5加密工具类

    JavaMD5加密工具类 algorithm = MessageDigest.getInstance("MD5"); algorithm.reset(); algorithm.update(s.getBytes("UTF-8")); byte[] messageDigest = algorithm.digest(); return messageDigest;

Global site tag (gtag.js) - Google Analytics