- day1-01-课程介绍
- day1-02-现代网络的威胁
- day1-03-对称加解密三要素
- day1-04-凯撒密码介绍
- day1-05-加密分类
- day1-06-对称加密特点vs非对称加密特点
- day1-07-加密领域常识
- day1-08-计算机单位换算
- day1-09-编解码与加解密
- day1-10-des介绍
- day1-11-3des介绍
- day1-12-AES介绍
- day1-13-对称加密小结
- day1-14-明文分组与密文分组
- day1-15-密码算法与分组模式的关系
- day1-16-ECB-电子密码本模式
- day1-17-与或非异或介绍
- day1-18-异或加密解密
- day1-19-CBC-密文分组链接模式
- day1-20-课程回顾
- day1-21-CFB-密文反馈模式
- day1-22-OFB-输出反馈模式
- day1-23-CTR-计数器模式
- day1-24-分组模式总结
- day1-25-des-cbc步骤分析
- day1-26-实现加密函数-无填充
- day1-27-填充逻辑分析
- day1-28-实现填充字符函数
- day1-29-解密函数-未去除填充
- day1-30-去除填充数据实现
- day1-31-aes-ctr加密
- day1-32-aes-ctr解密
- day1-33-知识点串讲
- day2-01-课程回顾-今日内容
- day2-02-非对称加密存在的问题
- day2-03-openssl生成公钥私钥
- day2-04-非对称加密常见使用场景
- day2-05-RSA加解密规则介绍
- day2-06-RSA生成规则细节(了解即可)
- day2-07-GO创建RSA私钥思路分析
- day2-08-生成私钥函数实现
- day2-09-公钥生成代码
- day2-10-公钥加密思路分析
- day2-11-公钥加密实现
- day2-12-私钥解密实现
- day2-13-课程回顾
- day2-14-base64命令使用
- day2-15-base64编码原理
- day2-16-base64代码测试
- day2-17-哈希函数介绍演示
- day2-18-哈希函数特性
- day2-19-哈希常用场景
- day2-20-哈希场景-数字签名(补充)
- day2-21-md5-方式1
- day2-22-md5-方式2
- day2-23-sha256运算
- day3-01-课程回顾-今日内容
- day3-02-为什么要使用消息认证码
- day3-03-对称加密存在问题演示
- day3-04-消息认证码介绍
- day3-05-MAC使用场景
- day3-06-HMAC函数介绍
- day3-07-hmac代码验证
- day3-08-消息认证存在的问题
- day3-09-数字签名认证流程(重要)
- day3-10-消息认证问题的解决
- day3-11-rsa数字签名
- day3-12-rsa数字签名认证
- day3-13-ecc介绍
- day3-14-ecc生成公钥私钥
- day3-15-课程回顾
- day3-16-ecc私钥签名
- day3-17-ecc公钥认证
- day3-18-为什么需要数字证书
- day3-19-https流程(重要)
- day3-20-windows下查看证书并解析
- day3-21-证书信任链
- day4-01-今日内容
- day4-02-课程回顾(详细)
- day4-03-一个加密通信的演化过程
- day4-04-分步生成证书(csr)
- day4-05-一步生成证书
- day4-06-window证书的导出和解析
- day4-07-PKI的组成要素
- day4-08-ssl简介
- day4-09-ssl交互细节(了解即可)
- day4-10-课程回顾
- day4-11-单向认证-生成服务器证书
- day4-12-单向认证-server编写
- day4-13-单向认证-学员常见问题
- day4-14-单向认证-client分析流程
- day4-15-单向认证-client编写
- day4-16-双向认证-server分析
- day4-17-双向认证-server编写
- day4-18-双向认证-client分析流程
- day4-19-双向认证-client实现
课程介绍
本课程涵盖区块链开发全部的必备密码学技术,包括密码理论、对称加密、分组密码、非对称加密、单向散列、消息认证、数字签名、证书、SSL 等部分。掌握常见的密码学接口和程序设计。
区块链技术是21世纪的重大创新技术,它是数字化资产的分布式账本,是构建价值互联网的基石,是驱动分享经济发展的新引擎。Go语言是区块链主流编程语言,简单易学、开发速度快且并发性好。 《Go语言与区块链》就业课程涵盖 go高级编程,go web开发,区块链密码学,以太坊,分布式微服务,hyperledger等技术要点,旨在打造基础扎实、知识面广、综合能力强的区块链应用层及底层技术引领者。
2019年Go语言与区块链课程
链接: https://pan.baidu.com/s/1rtstZKws3t9L8bcFZmUd3Q 提取码: gx1r
2019年Go语言与区块链课程
链接: https://pan.baidu.com/s/1rtstZKws3t9L8bcFZmUd3Q 提取码: gx1r
2019年Go语言与区块链课程
链接: https://pan.baidu.com/s/1rtstZKws3t9L8bcFZmUd3Q 提取码: gx1r
一 、概念
主要介绍非对称加密的一些概念。
公钥、私钥:均可加密或解密。私钥用来解密和签名,给自己用的。公钥由本人公开,用于加密和验证签名,给他人用的。
验签:用公钥解密签名得到摘要,然后用原始文件经过hash得到摘要,与解密出的摘要进行对比。
签名:内容->hash->digest->私钥加密->签名
证书:数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章,即CA的私钥加密生成)后形成的一个数字文件。
二、举例说明
假设X给Y写一份信,那么这封将包含如下三部分内容:
1、信本身的内容
2、X的数字签名
3、X的数字证书
然后Y收到这封信,Y会想这封确定是X发过来的吗?这封信在发送过程中有被篡改,还是完整的吗?只有当Y确认清楚,才能判断出信的内容是否可靠。
然后Y先用ZX提供的公钥解开数字证书,根据得到:如X个人信息,确定是X发过来的;得到X的公钥等。
接着,用X的公钥解开X的数字签名就能得到,信本身内容的摘要。然后将信的本身内容经hash计算得到又一个摘要,将两个摘要比较,如果相同说明信的内容没有被篡改。
BCCSP(Blockchain crypto provider)即区块链加密提供商,用于定义选择使用的密码学实现库。负责摘要生成,非对称密钥的签名与验证,根据证书查找私钥等。该模块提供了一系列的接口,这些接口定义了摘要的生成方法,签名,验证,加密,解密等。所有自定义的密码学实现库都需要实现这些接口,以此达到密码学算法的可插拔。
目前fabric BCCSP模块的接口有三种实现类,如下图所示:
其中SW(software based)实现方式是直接调用golang提供的库文件来进行加解密,哈希,签名验签等。
PKCS11是调用ecdsa来进行加密,解密,哈希,签名验签等,而ecdsa是通过调用动态运行库来进行以上功能的完成。
GM国密算法实现方式与PKCS11一致。中间层提供SM2进行签名与验签,SM3进行哈希,SM4实现加密。