非对称加密(一)

本文详细介绍了非对称加密的概念,对比了它与对称加密的区别,重点阐述了RSA加密算法的原理,包括密钥生成、通信流程,并提到了哈希算法在加密中的应用。此外,还讨论了Go语言中实现RSA加解密和哈希计算的方法。
摘要由CSDN通过智能技术生成

非对称加密

1. 对称加密的弊端’

  • 秘钥分发困难

  • 可以通过非对称加密完成秘钥的分发

    https

    Alice 和 Bob通信, Alice给bob发送数据, 使用对称加密的方式

    1. 生成一个非对称的秘钥对, bob生成
    2. bob将公钥发送给alice
    3. alice生成一个用于对称加密的秘钥
    4. alice使用bob的公钥就对称加密的秘钥进行加密, 并且发送给bob
    5. bob使用私钥就数据解密, 得到对称加密的秘钥
    6. 通信的双方使用写好的秘钥进行对称加密数据加密

2. 非对称加密的秘钥

  • 不存在秘钥分发困难的问题
2.1 场景分析

数据对谁更重要, 谁就拿私钥

  • 直观上看: 私钥比公钥长
  • 使用第三方工具生成密钥对: 公钥文件xxx.pub xxx
  1. 通信流程, 信息加密 (A写数据, 发送给B, 信息只允许B读)

    A: 公钥

    B: 私钥

  2. 登录认证 (客户端要登录, 连接服务器, 向服务器请求个人数据)

    客户端: 私钥

    服务器: 公钥

  3. 数字签名(表明信息没有受到伪造,确实是信息拥有者发出来的,附在信息原文的后面)

    • 发送信息的人: 私钥
    • 收到信息的人: 公钥
  4. 网银U盾

    • 个人: 私钥
    • 银行拿公钥

3. 使用RSA非对称加密通信流程

要求: Alice 给 bob发送数据, 保证数据信息只有bob能看到

4. 生成RSA的秘钥对

4.1 一些概念
  1. x509证书规范、pem、base64
    • pem编码规范 - 数据加密
    • base64 - 对数据编码, 可逆
      • 不管原始数据是什么, 将原始数据使用64个字符来替代
        • a-z A-Z 0-9 + /
  2. ASN.1抽象语法标记
  3. PKCS1标准
4.2 密钥对生成流程
  • 生成私钥操作流程概述

    1. 使用rsa中的GenerateKey方法生成私钥

      func GenerateKey(random io.Reader, bits int) (priv *PrivateKey, err error)

      • rand.Reader -> import “crypto/rand”
      • 1024 的整数倍 - 建议
    2. 通过x509标准将得到的ras私钥序列化为ASN.1 的 DER编码字符串

      func MarshalPKCS1PrivateKey(key *rsa.PrivateKey) []byte

    3. 将私钥字符串设置到pem格式块中

      初始化一个pem.Block块

      type Block struct {
              
          Type    string            // 得自前言的类型(如"RSA PRIVATE KEY")
          Headers map[string]string // 可选的头项
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值