PHP用密钥解密

时间:2017-01-11 13:42:41

标签: php encryption

我试图用PHP解密,但我不知道如何首先开始。

例如

秘密文本加密如此

70f9ac9b5b692a236031023c67d5166e990f18bd6ec89061

,关键就像

bin2hex()

此原始密钥是bin文件,我尝试使用public class b { public static String a(String paramString, byte[] paramArrayOfByte) { try { SecretKeySpec localSecretKeySpec = new SecretKeySpec(paramArrayOfByte, "DESede/ECB/PKCS5Padding"); Cipher localCipher = Cipher.getInstance("DESede"); localCipher.init(1, localSecretKeySpec); String str = new String(Base64.encode(localCipher.doFinal(ab.b(paramString)), 0)); return str; } catch (Exception localException) { return null; } catch (NoSuchPaddingException localNoSuchPaddingException) { break label52; } catch (NoSuchAlgorithmException localNoSuchAlgorithmException) { label52: break label52; } } public static byte[] a(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2, byte[] paramArrayOfByte3) { if ((paramArrayOfByte1 == null) || (paramArrayOfByte2 == null) || (paramArrayOfByte3 == null)) { return null; } try { SecretKeySpec localSecretKeySpec = new SecretKeySpec(paramArrayOfByte2, "AES"); String str = "NoPadding"; if (paramArrayOfByte3.length % 188 != 0) { str = "PKCS5Padding"; } Cipher localCipher = Cipher.getInstance("AES/CBC/" + str); localCipher.init(2, localSecretKeySpec, new IvParameterSpec(paramArrayOfByte1, 0, paramArrayOfByte1.length)); byte[] arrayOfByte = localCipher.doFinal(paramArrayOfByte3); return arrayOfByte; } catch (Exception localException) { d.e("m3u8", localException.toString()); } return null; } public static String b(String paramString, byte[] paramArrayOfByte) { try { SecretKeySpec localSecretKeySpec = new SecretKeySpec(paramArrayOfByte, "DESede/ECB/PKCS5Padding"); Cipher localCipher = Cipher.getInstance("DESede"); localCipher.init(2, localSecretKeySpec); String str = ab.b(localCipher.doFinal(Base64.decode(paramString, 0))); return str; } catch (Exception localException) { return null; } catch (NoSuchPaddingException localNoSuchPaddingException) { break label45; } catch (NoSuchAlgorithmException localNoSuchAlgorithmException) { label45: break label45; } } }

进行转换

这种加密方法是什么类型的?

添加信息

来自java的解密代码

{{1}}

1 个答案:

答案 0 :(得分:0)

从java文件的源代码可以看出。 这里使用的加密是TripleDES或DESede。

首先,您看到上面的输出是用base64编码的。

你写的密钥也用bin2hex()加密, 通过制作或使用公开发布的源代码,您可以为TripleDES制作PHP解密器

这是功能的概念:

function Decrypt($data, $secret)
{

    //Generate a key from a hash
    $key = md5(utf8_encode($secret), true);

    //Take first 8 bytes of $key and append them to the end of $key.
    $key .= substr($key, 0, 8);

    $data = base64_decode($data);

    $data = mcrypt_decrypt('tripledes', $key, $data, 'ecb');

    $block = mcrypt_get_block_size('tripledes', 'ecb');
    $len = strlen($data);
    $pad = ord($data[$len-1]);

    return substr($data, 0, strlen($data) - $pad);
}

我希望这有助于你:)