非对称加密基本原理

如果只是单方面采用非对称性加密算法,其实有两种方式。

这里我们设定A和B两方。

A和B都拥有自己的一对公钥私钥以及对方发送给自己的公钥。

第一种是签名:
A使用自己的私钥加密,B接收到后用A的公钥解密用于让所有公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改。但是不用来保证内容不被他人获得。

第二种是加密:
A用对方B的公钥加密,B收到A发过来的密文后用自己的私钥解密。用于向公钥所有者发布信息,这个信息可能被他人篡改(拥有B的公钥都可以篡改),但是无法被他人获得(因为没有B的私钥,你截获A发过来的报文也读不到内容)。
如果甲想给乙发一个安全的保密的数据,那么应该甲乙各自有一个私钥,甲先用乙的公钥加密这段数据,再用自己的私钥加密这段加密后的数据.最后再发给乙,这样确保了内容即不会被读取,也不会被篡改.

其实公钥和私钥都可以用来加密或解密
例如说,如果你想把某个消息秘密的发给某人,那你就可以用他的公钥加密。因为只有他知道他的私钥,所以这消息也就只有他本人能解开,于是你就达到了你的目的。
但是如果你想发布一个公告,需要一个手段来证明这确实是你本人发的,而不是其他人冒名顶替的。那你可以在你的公告开头或者结尾附上一段用你的私钥加密的内容(例如说就是你公告正文的一段话),那所有其他人都可以用你的公钥来解密,看看解出来的内容是不是相符的。如果是的话,那就说明这公告确实是你发的—因为只有你的公钥才能解开你的私钥加密的内容,而其他人是拿不到你的私钥的。
最后再说一下数字签名。
数字签名无非就两个目的:
1. 证明这消息是你发的;
2. 证明这消息内容确实是完整的—也就是没有经过任何形式的篡改(包括替换、缺少、新增)。
其实,上面关于“公告”那段内容,已经证明了第一点:证明这消息是你发的。
那么要做到第二点,也很简单,就是把你公告的原文做一次哈希(md5或者sha1都行),然后用你的私钥加密这段哈希作为签名,并一起公布出去。当别人收到你的公告时,他可以用你的公钥解密你的签名,如果解密成功,并且解密出来的哈希值确实和你的公告原文一致,那么他就证明了两点:这消息确实是你发的,而且内容是完整的。

其实概念很简单:

小明想秘密给小英发送消息

小英手里有一个盒子(public key),这个盒子只有小英手里的钥匙(private key)才打得开

小英把盒子送给小明(分发公钥)

小明写好消息放进盒子里,锁上盒子(公钥加密)

小明把盒子寄给小英(密文传输)

小英用手里的钥匙打开盒子,得到小明的消息(私钥解密)

假设小刚劫持了盒子,因为没有小英的钥匙,他也打不开

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值