我正在编写一个使用RSA登录的聊天程序。从理论上讲,服务器创建一个32字节的随机令牌作为字节数组,并使用用户的公共RSA密钥对其进行加密并将其发送给他,此时用户使用他的私钥对其进行解密,然后将其发送回serevr最后,服务器比较生成的令牌和从用户收到的令牌。
我注意到的问题是,有时当服务器加密令牌时,结果字节数组的长度为512字节并且登录失败但是当它全部好时,字节数组的长度大约是160字节。
public byte[] encode(byte[] toEncode) {
byte[] encoded;
BigInteger y=new BigInteger(toEncode);
y=y.modPow(new BigInteger(""+encodingPublicKey.getE()), encodingPublicKey.getN());
encoded=y.toByteArray();
return encoded;
}
这是代码,我可以找到解决这个问题的方法,但我想知道我做错了什么