`
erichua
  • 浏览: 516422 次
  • 性别: Icon_minigender_2
  • 来自: 远方
社区版块
存档分类
最新评论

Java加密共通函数

    博客分类:
  • JAVA
 
阅读更多
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.Security;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;


public class DesUtils {
	static {
		Security.addProvider(new com.sun.crypto.provider.SunJCE());
	}
	static boolean debug = true;
	private static String Algorithm = "AES";
	private static String secutiyKey = "1234567812345678";
	private static String fileName1="DESPW1.class";
	private static String fileName2="DESPW2.class";

	public static String getKey() throws Exception {
		String ret = "";
		
		URL url=DesUtils.class.getResource("");
		
		// 1.read the key from 1st file
		ret =new String(hex2byte(FileUtils.readFileToString(new File(url.getPath()+"/"+fileName1)))); 
		// 2.read the key from 2nd file
		// 3.combine the keys
		ret = ret + new String(hex2byte(FileUtils.readFileToString(new File(url.getPath()+"/"+fileName2)))); 

		// 4.change them to the byte array
		return ret;
	}
	
	public static void writeKeyToFile(){
		String key=StringUtils.strip(secutiyKey);
		int lenght=key.length();
		String prefix="";
		String afterFix="";
		if(lenght>0){
			prefix=StringUtils.substring(key, 0, lenght/2);
			afterFix=StringUtils.substring(key, lenght/2+1, lenght);
			URL url=DesUtils.class.getResource("");
			try {
				FileUtils.writeStringToFile(new File(url.getPath()+"/"+fileName1), byte2hex(prefix.getBytes()));
				FileUtils.writeStringToFile(new File(url.getPath()+"/"+fileName2), byte2hex(afterFix.getBytes()));
			} catch (IOException e) {
				
				// TODO Auto-generated catch block
				e.printStackTrace();
				
			}
		}
	}

	public static byte[] encodeConfig(byte[] set, byte[] key) {
		byte[] ret = null;

		// byte[] key = "tnts".getBytes();

		try {
			SecretKeySpec sk = new SecretKeySpec(key, Algorithm);
			Cipher c1;
			c1 = Cipher.getInstance(Algorithm);
			c1.init(Cipher.ENCRYPT_MODE, sk);
			ret = c1.doFinal(set);

		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (NoSuchPaddingException e) {
			e.printStackTrace();
		} catch (IllegalBlockSizeException e) {
			e.printStackTrace();
		} catch (BadPaddingException e) {
			e.printStackTrace();
		} catch (InvalidKeyException e) {
			e.printStackTrace();
		} catch (Exception e) {

			// TODO Auto-generated catch block
			e.printStackTrace();

		}

		return ret;
	}

	public static byte[] decodeConfig(byte[] set, byte[] key) {
		byte[] ret = null;

		try {
			// byte[] key = getKey();
			SecretKeySpec sk = new SecretKeySpec(key, Algorithm);
			Cipher c1;
			c1 = Cipher.getInstance(Algorithm);
			c1.init(Cipher.DECRYPT_MODE, sk);
			ret = c1.doFinal(set);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (NoSuchPaddingException e) {
			e.printStackTrace();
		} catch (IllegalBlockSizeException e) {
			e.printStackTrace();
		} catch (BadPaddingException e) {
			e.printStackTrace();
		} catch (InvalidKeyException e) {
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();

		}

		return ret;
	}

	// byte数组转换为16进制字符串
	public static String byte2hex(byte[] data) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < data.length; i++) {
			String temp = Integer.toHexString(((int) data[i]) & 0xFF);
			for (int t = temp.length(); t < 2; t++) {
				sb.append("0");
			}
			sb.append(temp);
		}
		return sb.toString();
	}

	// 16进制转换为byte数组
	public static byte[] hex2byte(String hexStr) {
		byte[] bts = new byte[hexStr.length() / 2];
		for (int i = 0, j = 0; j < bts.length; j++) {
			bts[j] = (byte) Integer.parseInt(hexStr.substring(i, i + 2), 16);
			i += 2;
		}
		return bts;
	}

	
}
 
0
2
分享到:
评论

相关推荐

    JCT - java加密解密工具包.zip_Java加密_java 加密_jct java_加密 解密_加密工具

    Java加密解密工具包,通常用于保护敏感数据的安全,防止未经授权的访问或篡改。这个名为"JCT"的工具包提供了丰富的功能,使得开发者在Java应用中集成加密和解密操作变得更加简单。下面我们将详细探讨Java加密的相关...

    PB字符串加密、解密函数

    编写PB加密函数时,需要注意以下几点: - 密钥管理:密钥的安全存储和传递是至关重要的,避免明文保存,必要时可使用密钥管理系统。 - 加盐(Salt)和迭代:对于哈希函数,加入随机的加盐值和多次迭代可以增加破解的...

    一个java加密程序源代码

    总之,这个Java加密程序源代码涵盖了许多核心加密概念和技术,包括但不限于对称加密、非对称加密、哈希函数、数字证书、密钥存储以及安全网络通信。深入理解并运用这些知识,可以有效提升应用程序的数据安全性和隐私...

    JAVA加密和解密的艺术(第二版).zip

    《JAVA加密和解密的艺术(第二版)》是一本深入探讨Java平台上的加密与解密技术的专业书籍。这本书不仅提供了理论知识,还包含了丰富的实践示例,帮助读者理解和掌握加密技术在实际应用中的运用。其内容涵盖了从基本...

    Java加密扩展基础

    Java加密扩展基础是Java开发工具包(Java SDK)中的一个重要组件,自1.4版本起,JCE(Java Cryptography Extension)被纳入核心库,为Java开发者提供了强大的安全功能。这个扩展提供了一套完整的框架,使得开发人员...

    java加密程序源代码

    Java加密程序源代码是关于使用Java编程语言进行数据加密和解密的技术实现。在Java中,我们可以使用多种方法来实现加密,这些方法通常基于标准的加密算法,如对称加密和非对称加密。对称加密算法如DES(Data ...

    java加密网址分享

    ### Java加密网址分享知识点概述 #### 一、Java加密技术概览 在互联网时代,数据安全变得尤为重要。Java作为一种广泛使用的编程语言,在处理敏感信息时提供了多种加密手段。本篇文章将探讨如何使用Java进行网址...

    基于Java实现的同态加密算法的实现

    在"research_encrypt-code"这个压缩包中,很可能包含了Java实现同态加密算法的源代码,包括密钥管理、加密、解密和操作加密数据的函数。通过研究这些代码,我们可以深入了解如何在实际应用中利用Java来构建安全的...

    Java加密算法(源代码)

    Java加密算法是信息安全领域的重要组成部分,它涉及到数据的保护、隐私的维护以及网络通信的安全。在Java中,我们可以使用多种加密技术来实现数据的加密和解密,包括对称加密、非对称加密以及数字签名等。下面将详细...

    JAVA 加密算法(很好的算法,经典摘要)

    Java加密算法是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java平台上,有多种内置的加密库,如Java Cryptography Extension (JCE) 和 Java Cryptography Architecture (JCA),它们为开发者...

    java加密解密工具

    Java加密解密工具是开发过程中不可或缺的部分,尤其是在处理敏感数据时,确保数据的安全性至关重要。在Java中,我们可以使用各种库和内置API来实现加密和解密操作。本篇文章将深入探讨Java加密解密的核心概念、常用...

    JAVA数据加密解密的实例

    Java作为一种广泛使用的编程语言,提供了丰富的工具和库来实现数据的加密和解密。本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不...

    java加密小程序

    Java加密小程序是一个非常适合初学者了解和实践Java编程中安全与加密技术的项目。在这个程序中,我们可以探索如何在Java环境中实现数据的安全存储和传输,这对于任何软件开发来说都是至关重要的。下面,我们将深入...

    Java加密与解密的艺术.pdf 下载

    标题和描述均提到了“Java加密与解密的艺术”,这暗示了文档主要聚焦于Java语言在数据加密和解密领域的应用。尽管提供的“部分内容”并未给出具体的技术细节,但我们可以根据这一主题,深入探讨Java中加密与解密的...

    java加密技术大全

    Java加密技术是保护数据安全的重要工具,广泛应用于网络通信、数据存储、数字签名等领域。本资源包涵盖了Java中常见的加密算法和技术,包括基础的哈希算法、对称加密、非对称加密以及证书签名和SSL/TLS协议。下面将...

    java加密算法实现

    在Java编程语言中,加密算法是信息安全领域的重要组成部分,用于保护数据的隐私和安全。本文将详细介绍Java中常见的加密算法的实现,以及如何在JDK 1.8环境下进行操作。 1. **对称加密算法** 对称加密是最基础的...

    java 加密 硬盘码 序列号

    在Java编程环境中,加密硬盘码和序列号是两个重要的概念,它们涉及到计算机安全和数据保护。硬盘码,也称为硬盘序列号,是每个硬盘独一无二的标识符,由硬盘制造商分配。序列号则常用于软件授权验证,以确保软件只在...

    java RSA加解密的udf函数

    RSAUdf.java可能包含了自定义的用户定义函数(UDF),这些函数用于执行RSA加解密操作。而KeyRSA.java可能包含了生成和管理RSA密钥对的代码。 在RSAUdf.java中,常见的方法可能有`encrypt()`和`decrypt()`。`encrypt...

    java加密算法源码

    Java加密算法源码是Java开发者在处理数据安全时经常需要用到的资源。这些源码涵盖了多种加密算法,包括对称加密、非对称加密、哈希加密以及消息认证码等,它们在网络安全、数据保密和身份验证等领域发挥着关键作用。...

Global site tag (gtag.js) - Google Analytics