2017-03-17 99 views
0

我正在学习加密。我做了一些密钥,编码了一个样本字符串(“1234 5678 9012 3456”),并能够解码它没有问题。第一部分工作正常。我需要多大的钥匙?

然后,我说我要编码的实际数据的样本试了一下,并得到了“数据大关键尺寸”的错误。

字符串长度为14041个字符,以及最终产品可能会更大了,于是我怎么做,而无需一1024000位的密钥或一些疯狂的喜欢这项工作?

编辑:正如我已经学会了当这在几个小时前开的一些东西,目前的方法我一直在玩使用RSA,因为这是openssl_pkey_new默认。

基本上,我有一个移动应用程序,我希望能够以最安全的方式来更新应用程序中的数据。我的老板对“云”有点偏执。我的想法是使用RSA或其他方式通过Web API页面验证应用程序,从已编码的数据库中获取最新的数据,并将其解码到应用程序中进行存储,以避免必须推出每次更新应用程序数据时都会有一个新版本(每年几次)。
我的老板真的不喜欢它泄漏数据的想法,所以我可以做的任何事情来锁定它会很好。

+0

可能的帮助:http://stackoverflow.com/questions/7143514/how-to-encrypt-a-large-file-in-openssl-using-public-key – CD001

+0

你使用什么密钥和密码?它几乎听起来像RSA,但它可能是其他的。 – jww

+0

@jww这和我想出的一样多:'$ keysize = 4096; (数组('private_key_bits'=> $ keysize));' – AndyD273

回答

1

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

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

与RSA加密将需要超过112K位(不切实际/不可能的)的关键尺寸14041个字节长度的字符串,AES密钥将通常为128或256位。

如果RSA需要的策略是使用混合加密,其中的数据被用AES和一个生成的随机密钥,然后将密钥与RSA加密加密。

+0

经过进一步的研究,我很确定我现在拥有的关键是RSA,因为这似乎是openssl_pkey_new()的默认值。我仍然在想这个,所以我会稍微阅读一下AES – AndyD273

+2

在你想要完成的事情上增加更多内容。查看更新的答案。 – zaph

+0

好吧,我添加了我的最终目标,而对称加密确实看起来像是要走的路。我发现[这个页面有一个AES-256的例子来替换mcrypt](https://paragonie.com/blog/2015/05/if-you-re-typing-word-mcrypt-into-your-code-you-重新做错了),但这个例子有这样的警告:'这个库是不安全的,因为它不是加密后的MAC,我甚至不知道这意味着什么......我可能需要关闭这个问题,打开一个问题正确的新问题。 – AndyD273