2016-01-26 105 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位是不平凡的中断。