`
erichua
  • 浏览: 510856 次
  • 性别: 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
分享到:
评论

相关推荐

    PB字符串加密、解密函数

    PB字符串加密、解密函数,非常好用。PB字符串加密、解密函数,非常好用。

    Java加密与解密的艺术配书源代码

    全书包含3个部分,基础篇对Java企业级应用的安全知识、密码学核心知识、与Java加密相关的API和通过权限文件加强系统安全方面的知识进行了全面的介绍;实践篇不仅对电子邮件传输算法、消息摘要算法、对称加密算法、...

    对java jar包实现混淆加密

    java代码混淆器,可以混淆函数变量、类、方法名以实现代码加密,java jar 混淆 工具 反编译

    java md5加密

    java中的md5加密函数,已经封装成类和函数了,非常好用。

    Java DES 加密/解密

    Java版标准3DES加密/解密方法,加密函数desedeEncoder(String paramString1, String key) 解密函数desedeDecoder(String dest, String key)

    JAVA加密 保护源代码 防止反编译的工具

    JAVACOMPILE 这款工具就不一样了,javacompile 它是修改了虚拟机内核, 用户目录里没有需要的JAVA字节码,而是当JAVA需要调用函数的时候才通过网络下载相对应的已经二次编译的字节码,就算用户通过 CLASS.getClass ...

    nodejs调用建行互联网银企被扫支付接口加密及验签Demo+java封装jar包

    该java源代码将建行互联网银企被扫支付接口java版加密及验签Demo 封装成jar包,方便nodejs调用。 1.将建行Java版加密Demo打包成jar包:CCBParam.jar。并将jar包放到服务器的相应文件夹下。 2.根据订单号、金额、付款...

    java常用类-MD5加密与DES加密解密

    java中常用的工具类,用于MD5的加密,里面还有切割了MD5加密的长度,有DES加密与解密,并且配有main函数可测试,可以根据自己的实际情况使用main函数测试使用

    java RSA加解密的udf函数

    NULL 博文链接:https://superlxw1234.iteye.com/blog/1654609

    Java加密与解密的艺术

    全书包含3个部分,基础篇对Java企业级应用的安全知识、密码学核心知识、与Java加密相关的API和通过权限文件加强系统安全方面的知识进行了全面的介绍;实践篇不仅对电子邮件传输算法、消息摘要算法、对称加密算法、非...

    Java加密和数字签名编程快速入门

    主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1,jdk1.5对上面都提供了支持,在java中进行消息摘要很简单, java.security....

    Android,java实现RSA加密

    RSA加密算法,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息...本资源是通过Android、java实现的RSA加密的例子,可供大家参考学习。

    基于JAVA的MD5加密解密实现

    纯JAVA的MD5加密,利用MD5单向函数产生密钥,方便测试

    SDes_java.rar_Java 8_SDES_SDES JA_java 加密_sdes_java

    加密算法包括5个函数:初始置换(IP);复杂函数fk,它包含有置换和代换运算,并且依赖于输入的密钥;用以转换数据两个部分的简单置换函数(SW);再一次运用函数fk;最后的一个置换函数是IP的逆。解密过程是加密的...

    基于单向陷门函数的加密

    基于单向陷门函数的加密

    java、Android、javaScript、ios 通用 AES加密、解密 已实际使用

    java、Android、javaScript(可以改成vue)、ios AES加密通用,可在服务端加密,客户端解密,也可在客户端加密,服务端解密;由于csdn会自动把积分改到50,可以发邮件到1622007541@qq.com 免费送

    Java/Android 加密解密压缩文件夹

    主要的两个函数分别为EncryptZipFile和DecryptZipFile函数。 /** * 生成带密码的ZIP压缩文件 * @param zipDir 待压缩文件路径 * @param EncryptZipFile 生成压缩文件得存储路径 * @param password 压缩密码 * @...

    Java中常用的加密方法(JDK)

    Java中常用的加密方法(JDK),对于一些不会使用加密方法的童鞋来说,本文档可能对你有一些启发哦。

    discuz加密解密函数 java版

    NULL 博文链接:https://yuur369.iteye.com/blog/1191386

Global site tag (gtag.js) - Google Analytics