Encryption 如何使用OpenSSL将一个短字符串加密为另一个短字符串

Encryption 如何使用OpenSSL将一个短字符串加密为另一个短字符串,encryption,openssl,public-key-encryption,Encryption,Openssl,Public Key Encryption,我希望使用类似“abcd-efgh”的字符串并执行非对称加密,以便在导出为十六进制-20字符左右时,生成的字符串本身相当短 当然,我意识到这不是很安全。这不是所讨论的用例的问题 加密字符串需要在PHP中生成并在桌面应用程序上解密,因此使用OpenSSL将非常有用 我曾尝试使用带有2048位RSA密钥的openssl_private_encrypt,但结果很长 有人能帮忙吗?你可以试试。它仍然不小,但比RSA密度大得多。160位的中断并非易事。您可以试试。它仍然不小,但比RSA密度大得多。160位

我希望使用类似“abcd-efgh”的字符串并执行非对称加密,以便在导出为十六进制-20字符左右时,生成的字符串本身相当短

当然,我意识到这不是很安全。这不是所讨论的用例的问题

加密字符串需要在PHP中生成并在桌面应用程序上解密,因此使用OpenSSL将非常有用

我曾尝试使用带有2048位RSA密钥的openssl_private_encrypt,但结果很长


有人能帮忙吗?

你可以试试。它仍然不小,但比RSA密度大得多。160位的中断并非易事。

您可以试试。它仍然不小,但比RSA密度大得多。160位的中断并不容易。

您可以查找教科书RSA,它没有填充和确定性。尝试将一些PHP等价的C
EVP\u PKEY\u CTX\u set\u rsa\u padding
设置为
rsa\u NO\u padding
。好吧,您可以使用更短的密钥(80位)而不进行任何填充,但这根本没有任何安全性。某些库阻止您创建短于512位甚至1024位的密钥。我不知道openssl是否支持这一点。另外,
openssl\u private\u encrypt
如果你希望公钥是公开的,就不应该用于加密。与其问你认为什么是最好的解决方案,不如解释一下真正的问题,问什么是最好的解决方案。@erickson我同意tarmes的问题。我打赌这是一个玩具应用程序/学术/只是为了好玩。能够拥有自包含加密的子512字节字符串是非常酷的;你可以对称地做这件事,但我真的想看看它是如何不对称地工作的。你可以查阅
教科书RSA
,它没有填充和确定性。尝试将一些PHP等价的C
EVP\u PKEY\u CTX\u set\u rsa\u padding
设置为
rsa\u NO\u padding
。好吧,您可以使用更短的密钥(80位)而不进行任何填充,但这根本没有任何安全性。某些库阻止您创建短于512位甚至1024位的密钥。我不知道openssl是否支持这一点。另外,
openssl\u private\u encrypt
如果你希望公钥是公开的,就不应该用于加密。与其问你认为什么是最好的解决方案,不如解释一下真正的问题,问什么是最好的解决方案。@erickson我同意tarmes的问题。我打赌这是一个玩具应用程序/学术/只是为了好玩。能够拥有自包含加密的子512字节字符串是非常酷的;你可以对称地做这个,但我真的想看看它是如何不对称地工作的。