Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我需要多大的钥匙?_Php_Encryption_Php Openssl - Fatal编程技术网

Php 我需要多大的钥匙?

Php 我需要多大的钥匙?,php,encryption,php-openssl,Php,Encryption,Php Openssl,我在学习加密。我制作了一些密钥,对一个样本字符串(“1234 5678 9012 3456”)进行了编码,并且能够毫无问题地对其进行解码。第一部分工作正常 然后我尝试了一个我想要编码的真实数据样本,得到了一个“对于密钥大小来说数据太大”的错误 字符串长度为14041个字符,最终的结果可能更大,那么如何在没有1024000位密钥或类似疯狂的东西的情况下使其工作呢 编辑:正如我在几个小时前打开它时已经学到的一些东西一样,我正在使用的当前方法使用RSA,因为这是openssl_pkey_new的默认值

我在学习加密。我制作了一些密钥,对一个样本字符串(“1234 5678 9012 3456”)进行了编码,并且能够毫无问题地对其进行解码。第一部分工作正常

然后我尝试了一个我想要编码的真实数据样本,得到了一个“对于密钥大小来说数据太大”的错误

字符串长度为14041个字符,最终的结果可能更大,那么如何在没有1024000位密钥或类似疯狂的东西的情况下使其工作呢

编辑:正如我在几个小时前打开它时已经学到的一些东西一样,我正在使用的当前方法使用RSA,因为这是openssl_pkey_new的默认值

基本上,我有一个移动应用程序,我希望能够以最安全的方式更新应用程序内的数据。我的老板对“云”有点偏执。我的想法是使用RSA或其他工具通过web API页面验证应用程序,从已编码的数据库中获取最新数据,并在应用程序中对其进行解码存储,以避免每次更新应用程序数据时(一年两次)推出新版本。

我的老板真的不喜欢它泄露数据的想法,所以我能做的任何事情都可以锁定它。

除非需要公钥/私钥对,否则不需要RSA(非对称)加密。非对称数据大小被限制为小于密钥长度,并且速度非常慢

通常对数据使用对称加密算法,如AES

使用RSA加密的长度为14041字节的字符串要求密钥大小超过112K位(不现实/不可能),AES密钥通常为128或256位


如果需要RSA,则策略是使用混合加密,即使用AES和生成的随机密钥对数据进行加密,然后使用RSA对密钥进行加密。

可能会有所帮助:您使用的密钥和密码是什么?它听起来几乎像RSA,但也可能是其他的。@jww这就是我所知道的:
$keysize=4096$res=openssl\u pkey\u new(数组('private\u key\u bits'=>$keysize))
@CD001这看起来确实像我需要的,但我还不确定我是否理解:)如果我读对了,我想生成一个RSA密钥,用我的openssl私钥对其进行编码,用RSA密钥对文件进行编码,然后将RSA编码的文件和编码的密钥发送到目标,其中密钥将被解码,然后文件将使用该密钥解码?虽然在这种情况下,它不是一个文件,而是一个任意长的字符串。嗯,我只需要明智地点头并说“可能”:)我通常使用GnuPG进行加密,这是一种稍微不同的方法,因为您首先需要收件人的公钥。。。除了在Apache上生成自签名证书之外,我不记得上一次我使用什么东西直接与OpenSSL接口了,所以我有点(非常)生疏了。。。但这听起来似乎是对的。经过进一步的研究,我非常确定我目前拥有的密钥是RSA,因为这似乎是openssl_pkey_new()的默认密钥。我仍然在想这个问题,所以我会读一些关于AES的书,再补充一点关于你想要完成什么的问题。请参阅更新的答案。好的,我添加了我的最终目标,对称加密看起来确实是一条路要走。我发现,但示例中有这样一个警告:
此库不安全,因为它在加密后不使用MAC
,我甚至不知道这意味着什么。。。我可能需要结束这个问题,打开一个新的问题,提出正确的问题。