java 生成对称密钥_Java中创建对称密钥的代码

1 加密

public static byte[] jiami() throws Exception

{

//密钥生成器

KeyGenerator key=KeyGenerator.getInstance("DESede");

/**初始化密钥生成器

* 该步骤一般指定密钥的长度。如果该步骤省略的话,

* 会根据算法自动使用默认的密钥长度。指定长度时,

* 若第一步密钥生成器使用的是“DES”算法,则密钥长度必须是56位;

* 若是“DESede”,则可以是112或168位,其中112位有效;若是“AES”,

* 可以是128, 192或256位;若是“Blowfish”,则可以是32至448之间可以被8整除的数;

* “HmacMD5”和“HmacSHA1”默认的密钥长度都是64个字节

*/

key.init(168);

//生成密钥

SecretKey secret=key.generateKey();

//生成一个密钥文件 miyao.bat 以后人家需要解密 你就提供他一个文件

FileOutputStream s=new FileOutputStream("c://miyao.bat");

ObjectOutputStream st=new ObjectOutputStream(s);

st.writeObject(secret);

//工厂模式获取Cipher实例 密码器

Cipher cp=Cipher.getInstance("DESede");

//初始化cipher ENCRYPT_MODE表示加密DECRYPT_MODE解密  后面一个参数是密钥

cp.init(Cipher.ENCRYPT_MODE, secret);

//定义一个明文

String pwd="liaomin999";

//获取字符串的utf-8字节码

byte[] by=pwd.getBytes("utf-8");

//对字节码机密 miby就是加密后的字节码

byte[] miby=cp.doFinal(by);

//获取密文字符串

return miby;

}

2解密

public static String jiemi(byte[] miwen) throws Exception

{

//通过提供的密钥文件 获取密钥对象 进行解密

FileInputStream s=new FileInputStream("c://miyao.bat");

ObjectInputStream st=new ObjectInputStream(s);

SecretKey secret=(SecretKey)st.readObject();

//工厂模式获取Cipher实例 密码器

Cipher cp=Cipher.getInstance("DESede");

//初始化cipher ENCRYPT_MODE表示加密DECRYPT_MODE解密  后面一个参数是密钥

cp.init(Cipher.DECRYPT_MODE, secret);

//对密文字节码进行解密 如果密码写入文件可以使用文件流读写成一个数组

byte[] miby=cp.doFinal(miwen);

//获取密文字符串

String minwen=new String(miby,"utf-8");

return minwen;

}

public static void main(String[] args) throws Exception {

byte[] miwen=jiami();

String minwen=jiemi(miwen);

System.out.println(minwen);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值