java 对称加密和非对称加密_浅谈对称加密与非对称加密

作为信息安全领域的基石,数据加密算法你或多或少应该用过。可你知道数据加密分成 对称加密 ( symmetric encryption ) 和 非对称加密 ( asymmetric encryption ) 两种吗?对称加密与非对称加密有什么区别?各自适用于什么场景?

对称加密

在对称加密中,我们需要维护一个 密钥 ( secret key )。数据加密者根据加密算法用 密钥 对 明文 进行加密,得到不可读懂的 密文 。数据解密者根据加密算法,用同样的 密钥 对密文进行解密,得到原来的明文。

f8a9e623909993d61960b2fece3046fe.png

如上图,在加密和解密的过程中,我们用到了同一个的 密钥 ,这样就是 对称加密算法 中对称一词的由来。那么,对称加密算法都有哪些呢?各自有什么特点呢?

AES ,高级加密标准,新一代加密算法标准,速度快,安全级别高;

DES ,数据加密标准,速度较快,适用于加密大量数据,但安全性较弱;

Blowfish ,使用变长密钥,运行速度很快,非专利算法,没有使用限制;

etc

| 安全级别 ( Security Level ) | 工作因素 ( Work Factor ) | 算法 ( Algorithm ) |

|:------------- |:--------------- | ------------- |

| 薄弱 ( Weak ) | $ O(2^{40}) $ | DES |

| 传统 ( Legacy ) | $ O(2^{64}) $ | RC4 |

| 基准 ( Baseline ) | $ O(2^{80}) $ | 3DES |

| 标准 ( Standard ) | $ O(2^{128}) $ | AES-128 |

| 较高 ( High ) | $ O(2^{192}) $ | AES-192 |

| 超高 ( Ultra ) | $ O(2^{256}) $ | AES-256 |

根据安全性,对称加密算法应该优先选择 AES ,位数尽可能大,例如 AES-256 。

由于所有参与者共享密钥,只要一人造成泄露便万劫不复,这是对称加密最大的弱点。因此,对称加密密钥分发、保管必须严格控制,以免泄露。

非对称加密

为解决对称加密共享密钥引发的问题,计算机科学家发明了一种更神奇的加密方式。这种加密方式需要两个密钥,一个是 公钥 ( public key )、一个是 私钥 ( private key )。私钥由自己保管,不能泄露;公钥分发给任何需要与自己通讯的参与者,无须保密。

数据加密者根据加密算法,用公钥对明文进行加密,得到不可读懂的密文。数据解密者根据加密算法,用私钥对密文进行解密,得到原来的明文。

77fc7c64b082c190d7a85270e472542f.png

由于加密环节和解密环节所用的密钥不同,因此这种加密方式也称为 非对称加密 ( asymmetric encryption )。由于公钥可以对外公开,也就不用刻意保护了。

此外,如果数据用私钥进行加密,那么只有用公钥才能解密。由于公钥是公开的,这种机制一般不用于加密数据,而用于对数据进行 签名 。

那么,非对称加密有哪些典型的应用场景呢?接下来,我们以一个虚构故事展开讨论:

Alice 是一位帮会大佬,手下有许多小弟, Bob 是其中一位。小弟们在外行动,定期汇报成果,接受指令。为保证通讯安全, Alice 通过非对称加密算法,打造了一对密钥:

0e56dd918756124b569c34760af9795e.png

Alice 小心翼翼地保管着私钥,并把公钥分发给 Bob 等小弟们。

数据加密

小弟 Bob 需要向 Alice 汇报工作, Alice 不希望汇报内容被第三方获悉,包括其他小弟。这时, Bob 用 Alice 给的公钥对汇报数据进行加密,再差人送给 Alice 。Alice 收到 Bob 送来的数据后,用自己手中的私钥一解,就知道 Bob 说啥了。

c609362f43c0744936deef145c60c516.png

由于用公钥加密的数据只有私钥能解,而私钥只有 Alice 有,因此汇报内容不可能被第三方知晓。换句话讲,只要私钥不泄露,加密数据便不会被其他人获悉。

数据签名

Alice 给 Bob 下达行动指令,内容虽然可以公开,但 Alice 必须防止不法之徒伪造指令。

为此, Alice 先借助类似 MD5 或 SHA 的哈希算法,为指令文本计算 摘要 。同样的文本生成的摘要一定相同;不同的文本,哪怕只差一个字母,生成的摘要一定不同。

接着,Alice 用私钥对摘要进行加密,并将加密结果作为 签名 与指令一起发给 Bob 。

46fc2d04b0ff801dccecc3b039563bd0.png

Bob 接到指令后,用公钥对签名进行解密,得到 Alice 生成的摘要。然后,他用同样的算法,重新为指令文本计算摘要。如果两个摘要吻合,便可确定指令是 Alice 下达的。

其他别有用心的第三方,或许已经掌握了摘要计算方法,但苦于缺少私钥,也就没有办法伪装成 Alice ,向 Bob 下达指令了。

这就是非对称加密的另一个典型使用场景—— 数据签名 ,可归纳为两步:

用私钥对数据进行签名;

用公钥对数据进行验证;

附录

更多 网络编程 技术文章请访问:Linux网络编程,转至 原文 可获得最佳阅读体验。

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[浅谈对称加密与非对称加密]http://www.zyiz.net/tech/detail-122692.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值