2016-01-26 127 views
0

我希望採用類似「abcd-efgh」的字符串並執行非對稱加密,以便在以十六進制格式導出時,生成的字符串本身相當短 - 大約20個字符。如何使用OpenSSL將短字符串加密爲另一個短字符串

我意識到,當然,這不會很安全。這對於使用案例來說不是問題。

加密的字符串需要在PHP中生成並在桌面應用程序中解密,因此使用OpenSSL會很有用。

我試過用2048位RSA密鑰使用openssl_private_encrypt,但結果很長。

任何人都可以幫忙嗎?

+0

你可以查看'教科書RSA',它沒有填充和確定性。嘗試將C'EVP_PKEY_CTX_set_rsa_padding'的一些PHP等效設置爲'RSA_NO_PADDING'。 –

+0

那麼,你可以使用一個較短的鍵(80位),沒有任何填充,但這並沒有任何安全性。某些庫會阻止您創建短於512甚至1024位的密鑰。我不知道openssl是否會支持這一點。另外,如果您希望公鑰爲* public *,則不應將'openssl_private_encrypt'用於加密。 –

+0

不要問你認爲什麼是最好的解決方案,而是要解釋真正的問題並詢問最好的解決方案是什麼。 – erickson

回答

0

你可以試試Elliptic Curve。它還不算小,但比RSA密度要大得多。 160位是不平凡的中斷。