我试图用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}}
答案 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);
}
我希望这有助于你:)