使用java-信息安全(五)-非对称加密算法RSA项目中RSAgit
RSA签名流程:github
发送方—>构建密钥对-》公布密钥给接收方—>使用私钥对数据签名-》发送签名、数据给接收方。
接收方—》使用公钥、签名验证数据算法
算法 | 密钥长度 | 默认长度 | 签名长度 | 实现的方 |
MD2withRSA | 512-65536 (64的整数倍) |
1024 | 同密钥 | JDK |
MD5withRSA | 同上 | 1024 | 同密钥 | JDK |
SHA1withRSA | ... | 1024 | 同密钥 | JDK |
SHA224withRSA | ... | 2048 | 同密钥 | BC |
SHA256withRSA | ... | 2048 | 同密钥 | BC |
SHA384withRSA | ... | 2048 | 同密钥 | BC |
SHA512withRSA | ... | 2048 | 同密钥 | BC |
RIPEMD128withRSA | 2048 | 同密钥 | BC | |
RIPEMD160withRSA | 同上 | 2048 | 同密钥 | BC |
// 如下指示方便理解,并不是真实场景 // 银行【公钥,私钥】----我的【银行的公钥】 // 1、我的→银行【RSA公钥加密】 // 1.我的发给银行密码,使用银行公钥进行加密,发给银行 // 2.银行读取解密后,准备回馈我的信息 // 2、银行→我的【银行数字签名】 // 注:因为我的没有公钥,私钥,银行也就无法用我的的公钥进行数据加密,可是为了确保信息是银行发的,使用数字签名 // 1.银行将要反馈给我的的数据进行,数字摘要【MD5,sha】等,将数字摘要用私钥加密, // 2.此时,银行将要发数据与私钥加密后的sign一块儿发给用户 // 3.用户收到数据与签名,用公钥对签名进行解密,解密成功,说明信息是银行发的 // 4.用户将数据用与银行约定好的数字摘要算法,进行数字摘要,对比解密后的签名与此签名是否一致,一致即数据完整 // 补充1,为了防止,别人伪造银行,因此须要使用数字证书,对公钥进行认证,就不会被伪造