一、背景
使用JGIT且用git协议连接时,报密钥格式错误。通过Debug发现是JSCH不支持OPENSSH格式私钥。更换为PEM格式私钥后解决。
根据PKCS#1加密块格式定义,RSA每次使用公钥进行加密时,原文需要进行伪随机填充。这就相当于是增加了噪声,达到同一原文的加密结果每次都不一样,使攻击者无法通过密文知晓原文是否一致。
今日因为一个问题在看Jsch的UserAuthPublicKey源码时发现,如果我只传输私钥而不传输公钥,它会根据私钥计算出公钥,发送给服务侧。
非对称密码在实现时,会在私钥里包含完整的信息(包含生成公钥的信息),也就是说可以根据私钥计算出公钥。