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

java 加解密(3DES)

阅读更多
package com.paic.umap.ucm.common.utils;

import java.security.MessageDigest;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

import org.bouncycastle.util.encoders.Base64;

public class LoginDesUtil {
public static final String ALGORITHM_DES = "DESede/ECB/PKCS5Padding";
	
	public static final String ZZGJSPWDKEY = "1HH798GZDKUO2167W5GM5YNG";
	

	
	/**
	 * 3DES加密方法
	 * 
	 * @param value  待加密信息
	 * @param desKey 密钥
	 * @return  3DES加密后用Base64编码的字符串
	 */
	public static String encrypt(String value, String desKey) {
		String result = null;
		try {
			SecretKeySpec key = new SecretKeySpec(desKey.getBytes(), 0, 24, "DESede");
			Cipher cipher = Cipher.getInstance(ALGORITHM_DES);
			cipher.init(Cipher.ENCRYPT_MODE, key);
			result = new String(Base64.encode(cipher.doFinal(value.getBytes("UTF-8"))), "UTF-8");
		} catch (Exception e) {
		} 
		
		return result;
		
	}
	
	/**
	 * 3DES解密方法
	 * 
	 * @param value  3DES加密后用Base64编码的字符串
	 * @param desKey 密钥
	 * @return 加密原文
	 */
	public static String decrypt(String value, String desKey) {
		String result = null;
		try {
			SecretKeySpec key = new SecretKeySpec(desKey.getBytes(), 0, 24, "DESede");
			Cipher cipher = Cipher.getInstance(ALGORITHM_DES);
			cipher.init(Cipher.DECRYPT_MODE, key);
			result = new String(cipher.doFinal(Base64.decode(value)), "UTF-8");
		} catch (Exception e) {
		} 
		
		return result;
	}
	
	public static void main(String[] args) {
		String result="+=  +=//";
		result = result.replaceAll("[+]", "%2B");
		result = result.replaceAll("[/]", "%2F");
		result = result.replaceAll("[=]", "%3D");
		result = result.replaceAll("[ ]", "%20");
		System.out.println(result);
		result = result.replaceAll("%2F", "/");
		result = result.replaceAll("%3D", "=");
		result = result.replaceAll("%20", " ");
		result = result.replaceAll("%2B", "+");
		System.out.println(result);
		System.out.println(LoginDesUtil.encryptToURL("!@#+/\\$  %^&*()[]{}【】|!金jin123", ZZGJSPWDKEY));
		
		System.out.println(LoginDesUtil.decryptToURL(LoginDesUtil.encryptToURL("!@#+/\\$  %^&*()[]{}【】|!金jin123", ZZGJSPWDKEY), ZZGJSPWDKEY));
	}
	
	
	/**
	 * 3Des的key加密(建议优先考虑) ,用于加密的URL使用
	 * @param value 待加密信息
	 * @return  3DES加密后用Base64编码的字符串
	 */
	public static String encryptToURL(String value, String key){
		String result = encrypt(value, key);
		// 将加密后字符串中“+”、“/”、“=”转换成替代字符串
		result = result.replaceAll("[+]", "%2B");
		result = result.replaceAll("[/]", "%2F");
		result = result.replaceAll("[=]", "%3D");
		result = result.replaceAll("[ ]", "%20");
		return result;
	}
	
	/** 
	 * 3Des使用默认的key解密URL (建议优先考虑) 
	 * @param value 3DES加密后用Base64编码的字符串
	 * @return 加密原文
	 */
	public static String decryptToURL(String value,String key){
		String result = value.replaceAll("%2B", "+");
		result = result.replaceAll("%2F", "/");
		result = result.replaceAll("%3D", "=");
		result = result.replaceAll("%20", " ");
		result = decrypt(result, key);
		return result;
	}
	
	
	/**
	 * 3Des使用默认的key解密
	 * @param value 待解密信息
	 * @return  3DES加密后用Base64编码的字符串
	 */
	public static String decryptToZZGJS(String value){
		return decrypt(value, ZZGJSPWDKEY);
	}
	
	public static String sign(String text, String sign) {
		String sha1 = null;
		try {
			MessageDigest md = MessageDigest.getInstance("SHA1");
			md.update(text.getBytes());
			sha1 = byte2string(md.digest());
		} catch (Exception e) {
		}
		return sha1;
	}
	
	private static String byte2string(byte[] data) {
		StringBuffer sb = new StringBuffer();
		char[] hex = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
				'A', 'B', 'C', 'D', 'E', 'F' };
		for(int i = 0; i < data.length; i++) {
			char[] t = new char[2];
			t[0] = hex[(data[i] >>> 4) & 0x0F];
			t[1] = hex[data[i] & 0x0F];
			sb.append(t);
		}
		return sb.toString();
	}
}




引用

http://dcloud.pa18.com/Citrix/XenApp/auth/silentDetection.aspx

分享到:
评论

相关推荐

    java和C#通用des3加解密

    标题中的“java和C#通用des3加解密”指的是在Java和C#这两种不同的编程语言中实现DES(Data Encryption Standard)的加强版——3DES(Triple DES)加解密算法。3DES是一种广泛使用的对称加密算法,通过三次应用DES的...

    java和javascript之间的DES加密解密

    3. **JavaScript实现DES加密解密**: JavaScript中没有内置的DES库,通常需要依赖第三方库,如`crypto-js`。这个库提供了DES加密解密的功能,使用方式类似于Java,先生成密钥,然后调用相应的加密或解密函数。 4. ...

    基于Java实现的加解密方法(DES、3DES、AES)以及五种分组密码工作模式

    本教程主要探讨了如何使用Java编程语言实现DES(Data Encryption Standard)、3DES(Triple DES)和AES(Advanced Encryption Standard)这三种常见的对称加密算法,并且详细讲解了五种分组密码的工作模式。...

    3DES加密解密java版+js版

    在Java和JavaScript中实现3DES加密和解密,主要涉及以下几个关键知识点: 1. **密钥生成**:3DES需要一个168位的密钥,但通常我们提供的是一个128位或更短的密钥。Java中的`javax.crypto.SecretKeyFactory`和`javax...

    实现使用3des在页面js加密,后台java解密

    本篇将详细介绍如何在网页前端使用JavaScript进行3DES加密,并在后端Java环境中进行解密。 一、3DES加密原理 3DES是DES的加强版,它使用了3个不同的56位密钥,通过3次独立的DES加密过程来提高安全性。具体流程如下...

    java-des.zip_Des加密解密_des_java des_java 加密解密

    des加密解密算法,通过DES加密解密实现一个String字符串的加密和解密.

    Java中3DES加密解密示例(封装byte数组16进制互转)

    Java 中的 3DES 加密解密示例(封装 byte 数组和 16 进制字符串互转) 在 Java 中,3DES 加密是一种常用的加密算法,它可以将明文数据转换为密文数据,以保护数据的安全性。在本示例中,我们将展示如何使用 3DES ...

    des加密解密java实现版本

    在Java中实现DES加密和解密是一项常见的任务,通常涉及到`javax.crypto`包中的类和接口。本篇文章将详细阐述DES加密解密的Java实现过程。 首先,我们需要了解DES算法的基本原理。DES是一种块密码,它将明文数据分成...

    JAVA实现DES加解密系统

    **JAVA实现DES加解密系统** DES(Data Encryption Standard)是一种经典的对称加密算法,它在信息安全领域有着广泛的应用。本文将深入探讨如何使用Java语言实现DES加解密系统,以及涉及的相关技术点。 首先,DES...

    java的DES加密解密

    java的DES加密解密:用于密码在数据库的加密,解码类

    JAVA实现3DES加密解密

    本篇文章将探讨如何使用Java来实现3DES的加密和解密操作。 首先,让我们了解3DES的工作原理。3DES是对原始DES算法的三次应用,它通过将密钥分为三个部分,然后执行加密、解密、再加密的过程,从而提高了安全性。这...

    转 JAVA加密解密DES对称加密算法.doc

    转 JAVA加密解密DES对称加密算法.doc

    RSA加密和3DES加解密

    在JAVA实现RSA和3DES加解密时,需要注意以下几点: 1. 密钥管理:妥善保管私钥,公钥可公开。生成密钥对时,要确保密钥长度足够安全,如RSA建议使用2048位及以上。 2. 初始化向量(IV):对于3DES,每次加密前需要...

    java代码-使用java解决3DES加密解密的源代码

    java代码-使用java解决3DES加密解密的源代码 ——学习参考资料:仅用于个人学习使用!

    Des3加解密,带加密向量

    `Des3.java`文件很可能包含了实现这一功能的代码示例。3DES支持两种工作模式:CBC(Cipher Block Chaining)和ECB(Electronic Codebook)。CBC模式下,每个明文块不仅与密钥进行加密,还会与前一个密文块进行异或...

    java加解密程序(DES)

    本文将深入探讨Java中如何使用DES进行加解密操作,并结合提供的文件列表进行相关分析。 首先,DES全称为数据加密标准,是一种在计算机科学中广泛使用的块密码。它基于64位的数据块进行操作,其中56位用于实际的密钥...

    Des.JAVA.rar_DES.java_DES加密_java DES 128bit_java des_加密解密

    3. `FileDES.java`:可能是一个用于对文件进行DES加密和解密的类,它可能封装了对文件流的操作,以便于读取文件,加密后的内容,再写入到新的文件中。 4. `trying1.java`和`trying.java`:可能是实验性的或者测试用...

    java php DES 加密解密

    在Java中,DES加密解密主要通过`javax.crypto`包中的类来实现。首先,我们需要一个密钥,通常是8字节的字节数组。然后,使用`KeyGenerator`生成一个DES密钥。接下来,创建`Cipher`对象并初始化它,根据需要进行加密...

    小程序+java后端统一 des 加密解密

    在标题提到的"小程序+java后端统一 des 加密解密"中,我们主要讨论的是使用DES(Data Encryption Standard)算法进行数据加密和解密的实践,这涉及到小程序客户端与Java后端服务之间的安全通信。 DES是一种对称加密...

    带界面的DES加密解密java源码

    2. **DES类**: Java中的`javax.crypto.Cipher`类是用于加解密的核心,它提供了多种加密模式,如ECB(Electronic Codebook)、CBC(Cipher Block Chaining)等。对于DES,我们通常选择更安全的CBC模式。 3. **密钥...

Global site tag (gtag.js) - Google Analytics