changzhen1990 2013-02-27 02:23 采纳率: 0%
浏览 7242

在java中如何实现对数据进行3DES的ECB加密算法

要加密的数据为:5140000000080401AEBFFFFFFFF7FBFE

密钥为:00000000000000000000000000000000

最后的结果为:DBBE8A87A4E37D95B5EDDD2BE6A4151F

我的代码为:

//SecretKey负责对称密钥的保存
    private SecretKey desKey;

    //完成加密和解密工作
    private Cipher c;

    //保存加密结果
    private byte[] cipherResultByte;

    private final static String Algorithm = "DESede/ECB/NoPadding";//加密方法/运算模式

    private static DESedeKeySpec dks;

    private static SecretKeyFactory keyFactory;   

    public DESeseTest02() {

        Security.addProvider(new com.sun.crypto.provider.SunJCE());

        try {

            dks = new DESedeKeySpec("00000000000000000000000000000000".getBytes());   

             keyFactory = SecretKeyFactory.getInstance("DESede");


            //生成密钥
            desKey=keyFactory.generateSecret(dks);


            //生成Cipher对象,指定其支持DES算法
            c=Cipher.getInstance(Algorithm);

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (InvalidKeySpecException e) {
            e.printStackTrace();
        }
    }


    public byte[] createEncryptor(byte[] b){

        try {

//          System.out.println(str);
            //根据密钥,对Cipher进行初使化,DECRYPT_MODE加密模式
            c.init(Cipher.ENCRYPT_MODE, desKey);

//          byte[] input=str.getBytes();
//          System.out.println(input.length);

            //加密,将结果保存
            cipherResultByte=c.doFinal(b);

        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        }
        return cipherResultByte;
    }

可加密出来的数据不对,大家帮忙给看看是怎么回事?谢谢大家

  • 写回答

2条回答

  • ce_la_vie 2013-02-27 05:35
    关注

    把这行

    "00000000000000000000000000000000".getBytes() 
    

    换成

    new byte[34]
    

    "0".getBytes()这句和new byte[]{0}这句不一样

    评论

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R