先说一下签名和加密的区别,签名和加密都是用算法对数据做处理
签名是用哈希算法将数据变为一个固定长度的哈希值,数据传过去时会将这个哈希值一起传过去,再告诉接收方用的什么算法和秘钥,接收方再用同样的方法对数据做处理如果和哈希值相同则数据没有错误;
加密是用秘钥将数据变为密文,只有接收方可以将数据解密,如果有第三方将数据截获看到的是密文,看不到真正的数据。
公钥和私钥:是发送方和接收方自己生成的一对秘钥,公钥是可以放在数据中传输过去的,私钥是自己保留的
现在有a和b,a的公钥是pub_a,私钥是pri_a,b的公钥是pub_b,私钥是pri_b,现在a要向b发送数据s,双方的公私秘钥已经自己生成好了,a和b先将自己的公钥发送给对方,之后a选定一个签名算法c,用算法c和私钥pri_a对明文s计算哈希值hash_s,再用pub_b和算法d将hash_s和明文整体加密为enc_s,再将算法c、算法d、enc_s发送给b,b收到后先用自己的私钥pri_b用算法d将密文解密,再用a发来的公钥结合算法c对数据中的明文求哈希值,如果这个哈希值和hash_s相等则证明传输的数据没有被篡改,数据传输结束。