简单工厂模式的应用--Java加密技术

//获取不同加密算法的密钥生成器 KeyGenerator keyGen=KeyGenerator.getInstance("DESede");

//创建密码器 Cipher cp=Cipher.getInstance("DESede"); 

 

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

public class DESEncrypt {
	public static void main(String args[])
	{
		String codeStringBegin="Sunny Liu";  //要加密的明文
		String codeStringEnd=null;             //加密后的密文
		String decodeString=null;              //密文解密后得到的明文
		String cipherType = "DESede"; //加密算法类型,可设置为DES、DESede、AES等字符串
		try
		{
			//获取密钥生成器
			KeyGenerator keyGen=KeyGenerator.getInstance(cipherType);
			//初始化密钥生成器,不同的加密算法其密钥长度可能不同
			keyGen.init(112);
			//生成密钥
			SecretKey key=keyGen.generateKey();
	
			//得到密钥字节码
			byte[] keyByte=key.getEncoded();
			//输出密钥的字节码
			System.out.println("密钥是:");
			for(int i=0;i<keyByte.length;i++)
			{
				System.out.print(keyByte[i]+",");
			}
			System.out.println("");
			//创建密码器
			Cipher cp=Cipher.getInstance(cipherType); 
			//初始化密码器
			cp.init(Cipher.ENCRYPT_MODE,key);
			System.out.println("要加密的字符串是:"+ codeStringBegin);
			byte[] codeStringByte=codeStringBegin.getBytes("UTF8");
			System.out.println("要加密的字符串对应的字节码是:");
			for(int i=0;i<codeStringByte.length;i++)
			{
				System.out.print(codeStringByte[i]+",");
			}
			System.out.println("");
			//开始加密
			byte[] codeStringByteEnd=cp.doFinal(codeStringByte);
			System.out.println("加密后的字符串对应的字节码是:");
			for(int i=0;i<codeStringByteEnd.length;i++)
			{
				System.out.print(codeStringByteEnd[i]+",");
			}
			System.out.println("");
			codeStringEnd=new String(codeStringByteEnd);
			System.out.println("加密后的字符串是:" + codeStringEnd);
			System.out.println("");
			//重新初始化密码器
			cp.init(Cipher.DECRYPT_MODE,key);
			//开始解密
			byte[] decodeStringByteEnd=cp.doFinal(codeStringByteEnd);
			System.out.println("解密后的字符串对应的字节码是:");
			for(int i=0;i<decodeStringByteEnd.length;i++)
			{
				System.out.print(decodeStringByteEnd[i]+",");
			}
			System.out.println("");
			decodeString=new String(decodeStringByteEnd);
			System.out.println("解密后的字符串是:" + decodeString);
			System.out.println("");
		} 
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}   
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值