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