0

我有一个程序,它显然是用一个可变长度的公共二进制密钥解密它的数据。

我通过做一些或多或少有根据的猜测得出了这些事实:

  • 逆向工程显示该程序需要包含公钥的文件名
  • 在十六进制编辑器中查看这个文件会显示完全随机的二进制数据(没有有趣的模式或任何东西),前缀是文件的长度 - 在一个版本中,文件只有 200 字节长,在另一个版本中大约 2000 字节。
  • 考虑到安全性,我猜程序公司用私钥加密数据文件,这样没有人可以创建自己的数据文件(这将满足程序的需要 - 不允许“修改”,也不允许在第三方中显示数据程式)。
  • 数据文件以人类可读的 64 字节长的标题为前缀,其余部分也是完全随机的二进制数据。

如果有这样的东西,我想为我自己的程序使用相同的系统。是否有一种能够使用可变长度的二进制密钥进行非对称加密/解密的加密方法,如果是,是哪一种以及如何实现这样的事情?

4

1 回答 1

1

这不是继续的方式。您可以将固定长度的键用于可变长度的数据。由于非对称加密非常慢,通常的方法是生成一个随机对称密钥(例如,128 位 AES 密钥)并使用例如 CBC 加密数据。然后对称密钥由非对称公钥加密,比如 RSA 2048 位。解密是指使用私钥解密密钥,然后使用数据专用密钥解密数据。

如果您不知道如何执行此操作,您可以使用能够创建 CMS(加密消息语法)的库来执行此方案。

注意:一个 2000 字节的非对称密钥对将永远加密某些东西,即使您可以创建一个该大小的密钥对。

于 2012-06-28T21:52:01.473 回答