对称与非对称加密

针对加密方式划分为 对称加密和非对称加密

对称加密:使用唯一秘钥对数据进行加解密,其主要特点为速度快、使用方便、适合对大数据量进行加解密操作;主要缺点也比较明显,需要事先约定秘钥,当双方通信时就涉及到该秘钥的交换,存在被截获风险。

Aes算法:将数据划分为区块,每个区块128位,计算过程将其固定在4*4矩阵内,矩阵中的每一个元素为1Byte,加密密钥可以为 128,192,256位,之后具体运算过程涉及 XOR 运算、查找表非线性替换函数替换字节、对行列做位移处理等,生成加密数据

 

golang 操作实现:

 

func aesDecode(private [32]byte, data *[]byte) error {

 

    var key []byte

 

    key = make([]byte, 32)

 

    copy(key[:], private[:32])

 

    block, err := aes.NewCipher(key)

    if err != nil {

        return fmt.Errorf("aesEncode Error: %v", err)

    }

 

    stream := cipher.NewCFBDecrypter(block, private[:block.BlockSize()])

 

    stream.XORKeyStream(*data, *data)

 

    return nil

}

 

func aesEncode(private [32]byte, data *[]byte) error {

 

    var key []byte

 

    key = make([]byte, 32)

 

    copy(key[:], private[:32])

 

    block, err := aes.NewCipher(key)

    if err != nil {

        return fmt.Errorf("aesEncode Error: %v", err)

    }

 

    stream := cipher.NewCFBEncrypter(block, private[:block.BlockSize()])

 

    stream.XORKeyStream(*data, *data)

 

    return nil

}

 

 

非对称加密: 主要特点拥有一组密钥对,公钥+私钥,私钥个人拥有,公钥可公开广播,数据使用公钥和公开算法对数据进行加密后,私钥可通过公开算法解密数据。

 

代表算法:RSA 、ECC

 

RSA 实行的是大数分解问题

ECC 椭圆曲线算法

 

算法的目的为增加逆向推导的难度,ECC椭圆曲线算法主要将计算域迁移到了椭圆上,涉及到的数学知识为 椭圆求和,几何定义在象限中的表现为 两点的和等于两点的连线与曲线的交点对x轴对称的镜像点

 

非对称秘钥算法可用于 数字签名和非对称加密

 

ed25519 签名算法

curv25519 可实现非对称加密,但非对称加密通常不用来做为数据加密算法,而是用来提供对称秘钥的秘钥交换安全算法,其使用方法可以为

 

1、明文——aes算法加密———>密文

2、秘钥使用非对称加密算法交换

 

aes秘钥选取 curv25519(A秘钥,B公钥)=Aes秘钥=curv25519(B秘钥,A公钥)

 

golang实现:

 

"golang.org/x/crypto/curve25519"

 

ScalarMult(dst, in, base *[32]byte)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值