⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newtest.java

📁 通过java方式实现的DESEDE加密算法,其中包括选区择不同的模式与填充方式进行的加密结果
💻 JAVA
字号:
package com.des.test;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import javax.crypto.KeyGenerator;

public class NewTEST
{

	public static void main(String[] args)
	{
		String key_String = "3343k";
		String src_String = "5555555555";
		String des_String = "";
		String new_Src = null;
		try
		{
			des_String = desEncrypt(key_String, src_String);
		} catch (Exception e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(des_String);
		try
		{
			new_Src = desDecrypt(key_String, des_String);
			System.out.println("new_Src::" + new_Src);
		} catch (Exception e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		System.out.println(new_Src);
		try
		{
			String dd = desDecrypt(key_String, des_String);
			System.out.println("ddddddddd  " + dd + "  dddddddddddd");
		} catch (Exception e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	// 进行3DES加密
	public static String desEncrypt(String key_string, String src_string)
			throws Exception
	{

		// 生成DES密钥
		SecretKey deskey;
		// 加密后的密文
		String des_String;
		// 判断密钥的长度,如果不是24位,则以"0"补齐
		String zeros = "                        ";
		if (key_string != null)
		{
			int keylength = key_string.length();
			if (keylength < 24)
			{
				key_string += zeros.substring(keylength);
			}
		} else
		{
			return null;
		}
		byte key_byte[] = key_string.getBytes(); //
		// 3DES 24
		System.out.println("key_string::::::::::" + key_string);
		deskey = getDESKey(key_byte);

		Cipher cipher = Cipher.getInstance("DESede", "SunJCE");
		cipher.init(Cipher.ENCRYPT_MODE, deskey);

		byte srt_byte[] = src_string.getBytes();
		// des_String = new String(cipher.doFinal(srt_byte));
		// BASE64转码
		byte[] by = cipher.doFinal();
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < by.length; i++)
		{
			sb.append(by[i]);
		}
		System.out.println("sb.toString():::::::" + sb.toString());
		System.out.println("by:::::::" + new String(by, "GBK"));
		System.out.println("srt_byte::::::::" + cipher.doFinal(srt_byte));
		des_String = base64Encode(cipher.doFinal(srt_byte));
		return des_String;
	}

	// 进行3DES解密
	public static String desDecrypt(String key_string, String des_string)
			throws Exception
	{

		// 生成DES密钥
		SecretKey deskey;
		// 未解密的明文
		String desede_String;
		// 解密后的明文
		String src_String;
		// 判断密钥的长度,如果不是24位,则以"0"补齐
		String zeros = "                        ";
		if (key_string != null)
		{
			int keylength = key_string.getBytes().length;
			System.out.println("keylength:" + keylength);
			if (keylength < 24)
			{
				key_string += zeros.substring(keylength);
			}
		} else
		{
			return null;
		}
		BASE64Encoder base64Encoder = new BASE64Encoder();

		// String base_keyStrng=base64Encoder.encode(key_string.getBytes());
		// System.out.println("base_keyStrng:"+base_keyStrng);
		byte key_byte[] = key_string.getBytes(); //
		// 3DES 24
		System.out.println("key_byte:" + key_byte.length);
		deskey = getDESKey(key_byte);

		Cipher cipher = Cipher.getInstance("DESede", "SunJCE");
		cipher.init(Cipher.DECRYPT_MODE, deskey);

		BASE64Decoder base64Decoder = new BASE64Decoder();
		base64Decoder.decodeBuffer(des_string);
		byte srt_byte[] = base64Decode(des_string);

		// BASE64转码
		// src_String = new String(cipher.doFinal(base64Decoder
		// .decodeBuffer(des_string)));
		src_String = new String(cipher.doFinal(srt_byte));
		return src_String;
	}

	/**
	 * 生成3DES密钥.
	 * 
	 * @param key_byte
	 *            seed key
	 * @throws Exception
	 * @return javax.crypto.SecretKey Generated DES key
	 */
	public static SecretKey getDESKey(byte[] key_byte) throws Exception
	{
		SecretKey k = null;
		k = new SecretKeySpec(key_byte, "DESede");

		DESedeKeySpec keySpec = new DESedeKeySpec(key_byte);

		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
		SecretKey key = keyFactory.generateSecret(keySpec);
		return key;
	}

	/*
	 * 对普通字符串进行BASE64转码 srcString :普通字符串
	 */
	public static String base64Encode(byte[] srcString)// 加base64
	{
		BASE64Encoder base64Encoder = new BASE64Encoder();
		try
		{
			// 经过BASE64加密后的密文
			String base64String = base64Encoder.encode(srcString);
			return base64String;
		} catch (Exception e)
		{
			e.printStackTrace();
			return null;
		}
	}

	/*
	 * 将BASE64字符串解码 base64String:BASE64字符串
	 */
	public static byte[] base64Decode(String base64String)// 解base64
	{
		BASE64Decoder base64Decoder = new BASE64Decoder();
		try
		{

			// 将BASE64转码过的字符串进行解码,获取明文
			byte[] src_byte = base64Decoder.decodeBuffer(base64String);
			return src_byte;
		} catch (Exception e)
		{
			e.printStackTrace();
			return null;
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -