RC4使用Java解密文件

时间:2014-07-29 11:28:31

标签: java encryption encoding hash

我有电话交换服务器,它记录呼叫并加密存储。我现在需要解密并转换所有对.wav文件的调用。

我可以看到它们是使用RC4算法加密的,但我无法弄清楚如何获得解密密钥。

这里" serverController.class"来自" AgentServer.jar

  

http://pastebin.com/3wVhhuqh

所有记录都在两个MySQl表中排序。这是两张表中的一条记录及其对应的加密文件:

表"记录":

  

http://i.imgur.com/w09LG2A.png

table" recordsdetails":

  

http://i.imgur.com/ThUC53S.png

记录文件:

  

https://dl.dropboxusercontent.com/u/19586312/00000000000000000000

有人能帮帮我吗?如果我可以解密那个文件,那么我就会知道如何处理其他文件并尝试自动化它。

谢谢!


private byte[] getRC4Key(BigInteger paramBigInteger)
   {
    try
{
  MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
  localMessageDigest.reset();
  localMessageDigest.update(ServerModel.getInstance().getConnection().getPassword().getBytes("ISO-8859-1"));
  byte[] arrayOfByte = localMessageDigest.digest();
  localMessageDigest.reset();
  localMessageDigest.update(arrayOfByte);
  localMessageDigest.update(ByteArraysUtils.BigInteger2ByteArray(paramBigInteger));
  return localMessageDigest.digest();
}
catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
{
  LOGGER.severe(localNoSuchAlgorithmException.getMessage());
}
catch (PbxOperationException localPbxOperationException)
{
  LOGGER.severe(localPbxOperationException.getMessage());
}
catch (UnsupportedEncodingException localUnsupportedEncodingException)
{
  LOGGER.severe(localUnsupportedEncodingException.getMessage());
}
return null;
}

我认为如果我有一把钥匙,我就可以解密该文件了。有人会介意解释密钥的生成方式吗?

1 个答案:

答案 0 :(得分:2)

因此它计算H(H(passwordEncoding) | paramBigIntegerEncoding),其中H是MD5哈希算法,|表示连接。您尚未向我们展示问题中BigInteger2ByteArray的代码,因此您可能必须自行查找如何对BigInteger进行编码。