2017-01-11 2 views
-1

Я пытаюсь расшифровать с помощью PHP, но я не знаю, как начать.PHP decrypt с ключом

, например

секретный текст шифровать как этот

wmUtiGKYwMqp0gai7XnDFD4tuZyYHmMKvcDd96ar+3fvuMOeUqBfpcRGuTn7uSXmnxQb4KIkYUryE7Zv5P9xMIhojWVvihzzB1NDae7c0UxOXfFEEdU8uxymGzrs+L3ThVRYoQTv/jGv9UkdvSuUHJEXOjFu7daGb/a9jmOyhGkokX3gUDkd8Kn3sJG51TdfefExGrBApjF/CEnEsLj+lu4fO6+2eLOnb737dW5pfKXN/x3f5JW2XI1zgZIUYPqsiaLz49bETuJT3F8KHZFWfnSyAiwlxY7NinBprOH1V+Fpz1+fL9emJsLieDTub1VgKNCrjcB9jlsGb0qYqowCS3ktewDqeowQbmgDpz3URtOE92O114eCglD2QBrBCcu+zW6nMk27d/gZg67MMKzaRX16F8tvme7oDKkYB6EIPkutkgs/lobR4Zfkl2MH5g4nLxLCj6phHMHDW3Y9TBpmhmtwGWwFfPy7I8QNft+GurGh4DcZvL9zNQfShX6SBN2UaYXZ5uUhFqBQIZLfwxF14URmytajKltrMLmoHZf2KUUwW2pnP0X/jwyQpP9Ose3AxoG6/7CQrnazBmm7c0wyftXAPJ7MIfiRNRNU1+Y1o6SOg4QvXdrSG4cL5hfqjtVyXWHwApKpmkB6KoK5DyapjopmAcRhOEUSPyOYj/QGVYlrwQugIbKU/hLtdzF4Cm5/lzrPYzm6QEr42jEidMDWqrE/sL88XLKlRed//ezwP8+2Fxv+yFrFOGS8pjLw5D6Mw4PIY7KdSnqCNad5TKwNztZbeK8UZrYQdTt6eqzBMSBIhKrWvKA22E+B+Q9fhBgslLr+wcEOP120cHsH8COv5uLGErtk4ojzc0jlT1i/8lOYqe+/vgQ+J48RxuSRvksowx70UtdogECoVpszEMKCsyLiuHbuHv22sC2IjNUv2+JpiifHIZ+UK3ZvXkt9R4d24ojtC7RBUgXBk0eLLMTl1qYZDskg9/ob66t7ptkyNJgnwmk2cAHl/pjbq8wqzdqju9r7Ky0vus8srs0OjZZ7zPEh1oaEoPkkD/uy6smP0yLKQwjCsK/KeaypQH90rlY5ACgogJqmaFX2J3EUDwcXqnGVtHHa8VUy3tIobCrHAn3Wbx0MaKsSJthWTOj91HRqUqJ2t+DPV8XoWfPe6Wz7HoW+8bjkNKU2mth0zxhYvMHFu4fDqlMbG6V/1gfUOihuGc1hI6+IEtvda+gcrXLEITqUs0QYEilGVHJcrQEexps= 

и ключ, как

70f9ac9b5b692a236031023c67d5166e990f18bd6ec89061 

Этот оригинальный ключ бен файл, и я стараюсь, чтобы преобразовать его bin2hex()

Что это за метод шифрования?

Добавление Информация

расшифровывать код, который из Явы

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; 
    } 
    } 
} 
+0

Знаете ли вы, что используется алгоритм шифрования? Если вы этого не сделаете, вы не сможете его расшифровать. –

ответ

0

Как видно из исходного кода Java-файла. Используемое здесь шифрование - TripleDES или DESede.

Прежде всего вы видите, что выход кодируется base64.

Как вы написали ключ шифруется с BIN2HEX(), Путем создания или использования публичных освобождены источники вы можете сделать PHP дешифратор для TripleDES

Вот идея функции:

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); 
} 

Я надеюсь, это помогает вам :)

+0

Я пробую код, но он не может расшифровать. –

+0

Привет, как вы можете видеть выше, код не расшифровывает ключ, который является bin2hex codded, сначала вы должны создать метод для дешифрования ключа из hex :) это базовое дешифрование в три раза :) –

+0

Я искал много дней, я нашел только способ конвертировать bin2hex или hex2bin, что вы еще один расшифровываете? –