在java中可以利用keytool工具生成非对称密钥对(PrivateKey和PublicKey),PublicKey和PrivateKey也 可以用KeyPairGeneerator来生成.keytool工具生成的密钥对保存在keystore文件中,这个keystore中可以保存多个密 钥对,每个密钥对都有一个唯一的名称(alias)与之对应,可以选择从这个keystore中导出某一个名称对应的密钥对的公钥,导出后的公钥叫做数字 证书,就是说数字证书中保存的就是一个公钥.而从keystore中导出的数字证书与一般自己生成的公钥是有区别的,数字证书能够将一个公钥与某个具体的 实体相对应(人或者企业机构),这个数字证书是否受到信任取决于你是否信任该证书的证书链上的任意一个颁发机构.如果证书受到信任即可以确认该证书中存储 的公钥确实是属于某个实体.在java中利用数字证书对信息进行签名,实质上做的事情是,先取得信息的摘要,然后对摘要进行数字签名(即用自己的私钥对摘 要进行数字签名).因此使用数字证书可以实现两个功能:防止信息被篡改(由摘要实现),防止抵赖(消息摘要是用自己的私钥进行的签名).举例:A要跟B通 信,A有B的证书(B的公钥),B有A的证书(A的公钥),A要给B发送信息的话,A就用自己的私钥对信息进行签名,接着将签名与要发送的信息一起发送给 B,B收到签名与信息后,用A的证书(A的公钥)验证签名,如果验证通过则B可以确信两件事情,第一信息在传输过程中没有受到篡改,第二,改信息确实由A 发送而来。 Continue reading
Apr
06