math - 部分密文的RSA加密和解密?

标签 math encryption cryptography rsa

我已经在我的 PC 上成功构建并编译了一个应用程序,它将生成 RSA key 对(我使用 GPK 进行长算术)。然后我测试了字符串“Hello World”的加密/解密(ASCII --> 首先进行十六进制转换)。

我的问题是,从数学上来说,只能从我的密文字符串“Hello World”中解密“Hello”,或者我必须先加密“Hello”,然后加密“World”,然后解密他们分开吗?

编辑:我想要的用例:

我有一个芯片(来自 Xilinx 的 Zynq SoC),它只有 256K 片上内存和 512K 二级缓存。

我可以使用一些基本指令/数据预填充和锁定缓存,然后将 256K 用于我的堆栈、堆和代码(变量)的 .data/.bss 部分。

我需要更多空间,所以我想我可以使用 256K 作为“交换”空间,并从外部加密闪存获取其余的 .text(指令代码),但我需要在- 维持安全的芯片。

我想知道是否可以加密整个图像,然后“获取、解密、解码、执行”。看起来我可能只能以 256K block 的形式加密我的图像,并以该大小的 block 对其进行解密。

最佳答案

RSA 是一种数学运算。您无法仅恢复部分纯文本;进行数学运算(cd mod n)将产生整个纯文本。正如您所建议的,如果您想分别解密两个部分,则必须执行两个单独的 RSA 加密操作。

这听起来有点像 X-Y 问题。你真正想实现什么目标?


更新: RSA 最适合用作 key 加密算法:您可以使用 RSA 加密对称算法的 key ,然后使用该对称算法加密应用程序数据,而不是直接加密数据。这就是 TLS、S/MIME、PGP 和任何其他广泛接受的协议(protocol)等协议(protocol)中使用 RSA 的方式。

因此,将 AES 等算法(使用合适的模式,最好是提供完整性保护的模式)与 RSA 一起使用,以获得安全高效的系统。

关于math - 部分密文的RSA加密和解密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20224385/

相关文章:

ios - 带有分数的 NSDecimalNumber 在提升到高幂时返回大数?

algorithm - 可变范围值数组的字典顺序

javascript - 是否可以利用允许 PEMDAS 的 javascript 数学函数?

java加密性能

.net - 使用 AesManaged 解密之前验证 key /IV ?或者在 CryptographicException 发生之前避免它?

python - 使用 Python 生成和使用 RSA key

swift - float 数学方程式没有按预期工作

从数据库获取 KEY 时出现 java.security.InvalidKeyException : Unsupported key.

java - XML 签名值不匹配问题

c++ - AES 限制和混合列