2017-03-17 101 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