使用 RSA 加密信件

问题描述 投票:0回答:2

我想使用 ASCII (Z=90) 加密字母“Z”,使用带有两个数字的密钥:(17, 3233)

RSA: 90^17 mod3233 = 1668

我想知道是否有任何方法可以将这封信加密为字符值。

encryption cryptography ascii rsa computer-science
2个回答
0
投票

RSA 不是流密码。加密结果始终具有模数的大小(位) - 在您的情况下为 3233。

数字 3233 需要 12 位 - 然而一个字节/字符仅提供 8 位。因此,您无法将 RSA 加密文本打包为一个字节发送。您至少需要 2 个字节。

是否可以将整数打包在 char 中取决于您对 char 的定义:

char =(可打印)ASCII 字符

可打印的 ASCII 字符通常有 7 位。你不能用 7 位来存储 12 位。

字符 = 字节

一个标准字符相当于一个字节,可以存储8位。你不能用 8 位来存储 12 位。

char = Java UTF-16 字符

考虑到 Java

char
是一个 UTF-16 字符,您可以将整数保存为一个字符,但是将二进制数据存储在 Java UTF-16
char
中是一种非常不干净和黑客的解决方案。 我强烈建议不要实现这个! 如果没有适当的转换和编码(例如十六进制编码的base64),二进制数据不应保存在字符(数组)中。


-1
投票

所有有符号字符值的范围从 -128 到 127。所有无符号字符值的范围从 0 到 255。因此唯一的方法是将这些数字置于该范围内。

© www.soinside.com 2019 - 2024. All rights reserved.