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

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条回答