Encryption 哪种解密使用长度可变的二进制公钥?

Encryption 哪种解密使用长度可变的二进制公钥?,encryption,public-key,private-key,Encryption,Public Key,Private Key,我有一个程序,显然是用一个可变长度的公开二进制密钥解密它的数据 我通过做一些或多或少受过教育的猜测得出了这些事实: 逆向工程显示,该程序需要包含公钥的文件名 在十六进制编辑器中查看此文件时,会显示完全随机的二进制数据(没有任何有趣的模式或任何东西),并以文件长度为前缀-在一个版本中,文件长度仅为200字节,在另一个版本中约为2000字节 考虑到安全性,我猜程序公司用私钥加密数据文件,这样就没有人可以创建自己的数据文件(这将符合程序的需要-不允许“修改”,也不允许在第三方程序中显示数据) 数据文

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

我通过做一些或多或少受过教育的猜测得出了这些事实:

  • 逆向工程显示,该程序需要包含公钥的文件名
  • 在十六进制编辑器中查看此文件时,会显示完全随机的二进制数据(没有任何有趣的模式或任何东西),并以文件长度为前缀-在一个版本中,文件长度仅为200字节,在另一个版本中约为2000字节
  • 考虑到安全性,我猜程序公司用私钥加密数据文件,这样就没有人可以创建自己的数据文件(这将符合程序的需要-不允许“修改”,也不允许在第三方程序中显示数据)
  • 数据文件的前缀是一个人类可读的64字节长的头,其余的也是完全随机的二进制数据
我想在我自己的程序中使用相同的系统,如果可以的话。
是否有一种加密方法能够使用可变长度的二进制密钥进行非对称加密/解密,如果有,是哪种方法?我如何实现这种方法?

这不是继续的方法。可以对可变长度数据使用固定长度键。由于非对称加密非常缓慢,通常的方法是生成随机对称密钥(例如,128位AES密钥)并使用CBC等加密数据。然后,对称密钥由非对称公钥(例如RSA 2048位)加密。解密意味着使用私钥解密密钥,然后使用特定于数据的密钥解密数据

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


注意:一个2000字节的非对称密钥对将永远无法加密某些内容,即使您可以创建一个这样大小的密钥对。

很可能是一个固定长度的密钥和一些其他数据。