2

我需要一些帮助来理解,如何将 SalesforceMarketingCloud 加密的字符串解密为 java。我应该承认我的问题中缺少一些东西,但这是迄今为止我所提供的

算法 – AES256, 256 位初始化向量 – 16 字节盐 – 8 字节密码短语 – “presharedpassphrase123”

据我了解,输入字符串已使用 EncryptSymmetric(@Clear, "AES", @null, @Passphrase, @null, @Salt, @null, @IV) 加密

但是当我尝试在 Java 端解密它时,由于各种原因它失败了。

到目前为止,当我使用如下组合时,我最好的方法是得到一个垃圾字符串作为输出

NoPadding、CBS 和使用 SHA-256 将我的密码(长度为 22 个字符)散列到 32 位

任何人都可以帮忙,您过去成功使用的任何 Java 代码示例。

private String decryptWithKey(String myKey, byte[] strToDecrypt) throws Exception
{
    MessageDigest sha = null;
    try {
        key = myKey.getBytes(CHAR_SCHEME);
        sha = MessageDigest.getInstance("SHA-256");

        key = sha.digest(key);
        key = Arrays.copyOf(key, 32); 
        secretKey = new SecretKeySpec(key, ALGO);

        Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");

        byte[] ivByte = new byte[cipher.getBlockSize()];


        ivByte = hexStringToByteArray("0716A494177F29F102AF33AFD0253BA1");;

        System.out.println(new String(ivByte));

// IvParameterSpec ivParamsSpec = new IvParameterSpec(IV); IvParameterSpec ivParamsSpec = new IvParameterSpec(ivByte);

        cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParamsSpec);
          setDecryptedString(new String(cipher.doFinal(strToDecrypt)));



      }
      catch (Exception e)
      {

          System.out.println("Error while decrypting: "+e.toString());

          throw e;
      }
      return decryptedString;

}
4

0 回答 0