Encryption 用RSA算法加密字母

Encryption 用RSA算法加密字母,encryption,cryptography,ascii,rsa,computer-science,Encryption,Cryptography,Ascii,Rsa,Computer Science,我得到了(173233),我需要用ascii码加密字母“Z”。(Z=90) 90^17 mod3233=1668,这样就行了。但是我想知道是否有一种方法可以只发送一个字符而不是整数1668,并且仍然可以工作。所有有符号字符值的范围都是-128到127。所有无符号字符值的范围为0到255。因此,唯一的办法就是让这些数字在这个范围内。RSA不是流密码。加密结果始终具有模的大小(位)-在您的示例3233中 3233数字需要12位,但一个字节/字符只能提供8位。因此,您不能将RSA加密文本打包为一个字节

我得到了(173233),我需要用ascii码加密字母“Z”。(Z=90)
90^17 mod3233=1668,这样就行了。但是我想知道是否有一种方法可以只发送一个字符而不是整数1668,并且仍然可以工作。

所有有符号字符值的范围都是-128到127。所有无符号字符值的范围为0到255。因此,唯一的办法就是让这些数字在这个范围内。

RSA不是流密码。加密结果始终具有模的大小(位)-在您的示例3233中

3233数字需要12位,但一个字节/字符只能提供8位。因此,您不能将RSA加密文本打包为一个字节。您至少需要2个字节

是否可以将整数打包到字符中取决于您对字符的定义:

字符=(可打印)ASCII字符 可打印ASCII字符通常有7位。不能在7位中存储12位

字符=字节 标准字符相当于一个字节,允许存储8位。不能在8位中存储12位

char=Java UTF-16 char
考虑到Java
char
是一个UTF-16字符,您可能可以将整数保存为一个字符,但是将二进制数据存储在Java UTF-16
char
中是一个非常不干净和粗俗的解决方案我强烈建议不要执行此操作如果没有正确的转换和编码(例如十六进制编码的base64),二进制数据不应保存在字符(数组)中。

您必须将其编码为可计算的数字形式,而不是以任何实际方式。