java 对称加密——直接代码中加密

我夕

java中的安全简单点的来说就是关于数据的加密与解密的编程,数据的加密在程序中占据着很重要的一部分,特别是在扯到钱的方面时显得更重要。 数据的加密分为分为两大类即对称加密与非对称加密。

对称加密称为密钥加密,特点速度快,但加密和解密的钥匙必须相同,只有通信双方才能知道钥匙
非对称加密称为公钥加密,特点速度慢,加密和解密的钥匙不相同,某一个人持有私钥,任何人都可以知道公钥

接下来来做一个很简单的关于对称加密的例子,即对一串字符串进行加密然后打印出加密的数据,然后在对其解密输出。

package com.cipher.test;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
/**
 * 
 * @ClassName: SimpleTest1
 * @Description: 简单的对称加密(一)
 * @author 我夕
 * @date 2012-5-15
 */
public class SimpleTest1 {

	/**
	 * @param args
	 * @throws BadPaddingException 
	 * @throws IllegalBlockSizeException 
	 * @throws NoSuchPaddingException 
	 * @throws NoSuchAlgorithmException 
	 * @throws InvalidKeyException 
	 */
	public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, 
	IllegalBlockSizeException, BadPaddingException {
		// TODO Auto-generated method stub
		simplCipherTest();

	}
	//简单密钥加密
	public static void simplCipherTest() throws NoSuchAlgorithmException, NoSuchPaddingException, 
	InvalidKeyException, IllegalBlockSizeException, BadPaddingException{
		
		//创建Cipher的实例,AES是一个转换名称
		//有关标准转换名称的信息,请参见 Java Cryptography Architecture Reference Guide 的附录 A。
		Cipher cipher = Cipher.getInstance("AES");
		
		//产生key
		SecretKey key=KeyGenerator.getInstance("AES").generateKey();
		
		//初始化cipher,参数1是Cipher 的操作模式(ENCRYPT_MODE、DECRYPT_MODE、WRAP_MODE 或 UNWRAP_MODE),这里选加密模式
		//ENCRYPT_MODE,参数二是密钥key
		cipher.init(Cipher.ENCRYPT_MODE, key);
		
		//开始加密数据的操作
		cipher.update("hello java !".getBytes());
		byte[] result=cipher.doFinal();//这里返回结果打印出来,便于调试
		System.out.println("数据加密的结果:"+new String(result));
		
		//这里进行解密操作
		cipher.init(Cipher.DECRYPT_MODE, key);
		System.out.println("数据解密的结果:"+new String(cipher.doFinal(result)));
		
	}

}


运行结果:

从运行结果可以看出,得到我们想要的结果了,hello java被加密后就是一堆乱码,根本看不出什么东西出来,只有进行解密后才能看到其原始真正的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值