qq_30457813 2021-02-27 10:36 采纳率: 0%
浏览 25

DES解密报错,求大神帮忙

C++代码

CipherMode.ECB

 

            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

            MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();

            DES.Key = hashMD5.ComputeHash(Encoding.UTF8.GetBytes(des3Password));

            DES.Mode = CipherMode.ECB; ICryptoTransform DESDecrypt = DES.CreateDecryptor();

       

                byte[] Buffer = Convert.FromBase64String(EncryptValue);

               string result = Encoding.UTF8.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));

可以正确解密,java代码public static String EncryptString(String strText, String sKey) {
                // MD5加密
             //   String md5s = EncryptMD5.getMD5(strText);
                try {
                    SecureRandom random = new SecureRandom();
                    byte[] bkey = (sKey.substring(0,8)).getBytes();
                    DESKeySpec deskey = new DESKeySpec(bkey);
                    // 创建一个密钥工厂,然后用它把DESKeyspec转换成
                    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
                    SecretKey securekey = keyFactory.generateSecret(deskey);
                    // cipher对象实际完成加密操作
                    Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
         
                   // cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
                    // 用密钥初化Cipher对象
                    cipher.init(Cipher.ENCRYPT_MODE, securekey, random);
                    // 现在,获取数据并加密
                 //   // 正式执行加密操作
                   // String str = md5s + strText;
                    byte[] t = strText.getBytes("UTF-8");
                    byte[] bResult = cipher.doFinal(t);
                    // 1、加密完byte[] 后,需要将加密了的byte[] 转换成base64保存,如:
                    BASE64Encoder base64encoder = new BASE64Encoder();
                    String encode=base64encoder.encode(bkey);
                    return base64encoder.encode(bResult);
         
                } catch (Throwable e) {
                    e.printStackTrace();
                }
                return null;
            }

解密报错

怎么修改啊,求大神帮忙

  • 写回答

1条回答 默认 最新

  • 幻灰龙 2021-02-27 11:41
    关注

    问题和代码给的不是很清楚,请参考这里的文档和例子:

    https://www.baeldung.com/java-cipher-class

    https://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html

     

    评论

报告相同问题?

悬赏问题

  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多