gpt4 book ai didi

java - 如何从 RSA 1024 位加密中获得较短的输出(密文)结果?

转载 作者:行者123 更新时间:2023-12-01 13:06:33 30 4
gpt4 key购买 nike

据我所知,RSA 加密的输出将等于 key 模数的长度(在本例中为 128 字节)。我的 RSA 加密代码是:

public byte [] RSAEncrypter () throws Exception {
byte[] inBytes = textfield1.getString().getBytes();
if (newRSApubKey == null){
throw new Exception("Generate RSA keys first!");
}
AsymmetricBlockCipher eng = new RSAEngine();
eng = new PKCS1Encoding(eng);
eng.init(true, newRSApubKey);
return eng.processBlock(inBytes, 0, inBytes.length);
}

我使用十六进制编码处理结果输出以获得 256 个字符,如下所示;

textfield2.setString(new String(hex.encode(eng.processBlock(inBytes, 0, 
inBytes.length))));

我使用base64编码处理相同的输出以获得172个字符,如下所示;

textfield3.setString(new String(Base64.encode(eng.processBlock(inBytes, 0,
inBytes.length))));

但是,我看到了一个可用的 PDF here其中作者能够获得 128 个字符;尽管他们没有提及这是如何实现的。拜托,我认为这是由于使用的编码(对吗?)造成的。我有什么编码替代方案?或者我该如何处理这行代码才能实现至少 128 个字符的输出?

最佳答案

获得 128 个字符的唯一方法是将每个字节视为一个字符。在这种情况下,您必须允许超出可打印范围的字符,因此您必须允许 0x207F 以下的所有字符。您可以通过使用 C/C++ 字符数组(char*char[])并存储长度来获得此值,因为 C 不区分字符和字节。所以从这个意义上说,这可能只是语言上的困惑。

关于java - 如何从 RSA 1024 位加密中获得较短的输出(密文)结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23221785/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com