java jdk 加密_JDK加密解密

import java.security.Key;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

import org.apache.commons.codec.binary.Hex;

public class ImoocDes {

public static void main (String [] args) {

ImoocDes imoocDes = new ImoocDes();

imoocDes.jdkDes("imooc security des");

}

public void jdkDes(String password) {

try {

//生成key

KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");

SecretKey secretKey = keyGenerator.generateKey();

byte [] bytKey = secretKey.getEncoded();

//key转换

DESKeySpec dESKeySpec = new DESKeySpec(bytKey);

SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");//参数指定加密方式

Key secretKey1 = secretKeyFactory.generateSecret(dESKeySpec);

//加密

Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

cipher.init(Cipher.ENCRYPT_MODE, secretKey1);

byte[] result = cipher.doFinal(password.getBytes());

System.out.println("jdk:" + Hex.encodeHexString(result));

//解密

cipher.init(Cipher.ENCRYPT_MODE, secretKey1);

result = cipher.doFinal(result);

System.out.println("jdk:" + new String(result));

} catch (Exception e) {

e.printStackTrace();

}

}

}

上面的代码都是按照老师的代码写的遇到了两个问题请大家帮忙解答一下1

问题1多次运行时加密的结果不一样这样正常吗

问题2解密的时候为什么解密结果一直是乱码

两次运行结果如下

第一次运行

jdk:b2f7b3a368cc58fb16e9c3fc3980c9da08cd09670b05e47d

jdk:>|V'bC(mA4ѝp öd

第二次运行

jdk:ac91a46c660ce3170281f64dc17489756ad8e15169fda33d

jdk:C 03H

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值