加密算法
2021-11-01 11:26:29 8 举报
AI智能生成
SM2扫盲
作者其他创作
大纲/内容
RSA
数学原理
知道两个大数 做乘法很容易
但是知道一个大数 做因式分解很难
但是知道一个大数 做因式分解很难
SM2
数学原理
知道椭圆曲线上的起点 和操作的次数 求终点很容易
但是知道起点和终点 推算操作次数很难
但是知道起点和终点 推算操作次数很难
椭圆曲线
公式
y^2 = x^3 + ax + b
特性
关于x轴对称
不垂直于x轴的直线和椭圆曲线最多有三个交点
操作
计算机实现
曲线描述
我们不需要连续的点
甚至可以说 我们只要整数点
所以我们需要把曲线离散化
甚至可以说 我们只要整数点
所以我们需要把曲线离散化
y^2=x^3 + x + 1(mod23)的图像
证书数据结构
概述
编辑器打开一个证书文件 通常是一段base64的字符串
这段字符串带了很多信息 比如版本号 签名算法 有效期等等
远远不是只有公钥和私钥
这段字符串带了很多信息 比如版本号 签名算法 有效期等等
远远不是只有公钥和私钥
ASN1Sequence(磁盘存储层)
一种标准的数据结构来定义一本证书的每一个字段
通常我们可以直接使用
ASN1Sequence.getInstance(certBytes)来解析证书
certBytes是base64.decode过的字节数组
通常我们可以直接使用
ASN1Sequence.getInstance(certBytes)来解析证书
certBytes是base64.decode过的字节数组
Certificate(代码运行层)
证书数据结构
通常我们使用
Certificate.getInstance(seq)来构造一个证书对象
seq是ASN1Sequence对象
通常我们使用
Certificate.getInstance(seq)来构造一个证书对象
seq是ASN1Sequence对象
X509
可以简单的理解为公钥证书的标准解析接口
PKCS#
可以简单的理解为私钥证书的标准解析接口
ECDomainParameters
一条椭圆曲线的主要构造参数
这个参数是由国家颁布的
这个参数是由国家颁布的
a
椭圆曲线多项式中x的系数
b
常数系数
p
mod运算的值(前文中的23)
G
椭圆曲线上的一个点
n
点G的阶
可以简单的理解为曲线和G确定了
n的值也唯一确定
可以简单的理解为曲线和G确定了
n的值也唯一确定
SM2公钥私钥的关系
数学公式表达
K = kG
K是公钥(是椭圆曲线上的点)
k私钥
G是一个预定义的椭圆曲线上的点
(由国家颁布)
(由国家颁布)
为什么公钥私钥需要两个不同的数据结构表示
私钥需要带更多的信息
比如对应公钥的构造信息
比如对应公钥的构造信息
TODO
加解密算法深入理解
签名验签深入理解
射影平面深入理解
参考文献
椭圆曲线通俗易懂简介
ECC加密算法
0 条评论
下一页