数字签名是什么
相信大家不会陌生,日常我们和公司签合同时会签名,刷信用卡支付时会签名;而数字签名就是将日常中这种签名功能在计算机中实现的一种技术;数字签名不仅能够识别篡改和伪装,还能防止否认等特性,那么数字签名是如何做到的呢?
##签名生成与校验
生成签名:一般是发送者对发送的消息进行签名,以表示我认可该消息
验证签名:接受者对发送者发送的签名进行验证,已确定该签名是否是发送者签署的,如果验签失败表示该签名不是发送者的或者发送的消息被人篡改了
无论是生成签名还是验证签名都需要密钥来完成;生成签名需要签名密钥来,验证签名动作需要验签密钥来完成,签名密钥只有签名者才能有,验证密钥则是任何验证签名的人都可以拥有;只有签名密钥才能生成签名,只有验证密钥才能验签;
上面说的是不是有点和公钥密钥算法类似?对,确实有很大关系,其实数字签名是将公钥密码算法反过来使用,我们先来简要回顾下公钥密码算法
- 公钥加密后的密文只能用与公钥相匹配的私钥进行解密
- 公钥顾名思义可以被公开
- 私钥只能被需要解密方所拥有,只要私钥不泄漏,窃取者即使拦截到密文和公钥也无法破解到明文
- 公钥密码解决了对称