包含第一部分:总则,第二部分:数字签名算法,第三部分:密钥交换协议,第四部分:公钥加密算法,第五部分:参数定义。附SM2密码使用规范及加密签名消息语法规范。
2021-03-10 18:00:20 58.7MB SM2 国密算法
1
椭圆曲线密码体制的理论与实现。介绍密码体制最新理论与技术
2021-03-10 09:00:12 1005KB msm
1
Finite fields(ENCYCLOPEDIA OF MATHEMATICS AND ITS APPLICATIONS, vol.20), Rudolf Lidl, 2003.djvu
2021-02-22 15:04:12 3.87MB Finite fields
1
### 椭圆曲线密码系统的MATLAB实现 #### 引言 椭圆曲线密码体制(Elliptic Curve Cryptography, ECC)是一种基于椭圆曲线代数结构的公钥密码技术,由Neal Koblitz和Victor Miller在1985年提出。与传统的RSA等密码系统相比,ECC能够在保证相同安全级别的前提下使用更短的密钥长度,这使得它在资源受限的设备(如智能手机、物联网设备等)中尤其受欢迎。本文旨在探讨如何使用MATLAB实现椭圆曲线密码系统,并首次尝试将其应用于汉字加密和解密。 #### 1. 椭圆曲线加密和解密的基本原理 ##### 1.1 椭圆曲线的建立 椭圆曲线密码体制依赖于一个特定的椭圆曲线,该曲线定义在一个有限域F_q上,其中q通常是一个素数或素数的幂。椭圆曲线的标准形式为: \[ y^2 = x^3 + ax + b \mod q \] 其中,\(a\) 和 \(b\) 是曲线的系数,满足 \(4a^3 + 27b^2 ≠ 0\) 来确保曲线是非奇异的。此外,还需要选定一个椭圆曲线上具有较大阶数的点 \(P\) 作为生成元。 ##### 1.2 密钥的产生 每个用户需要生成一对密钥——公钥和私钥。私钥是一个随机选取的大整数 \(d\),范围通常为 \([1, n-1]\),其中 \(n\) 是生成元点 \(P\) 的阶。公钥 \(Q\) 可通过椭圆曲线上的标量乘法计算得出,即 \(Q = dP\)。 ##### 1.3 加密过程 假设发送方 \(B\) 想要向接收方 \(A\) 发送消息 \(m\),加密过程如下: 1. 获取接收方 \(A\) 的公钥 \(Q\)。 2. 将消息 \(m\) 表示为椭圆曲线所在域中的元素。 3. 随机选取一个整数 \(k\),范围为 \([1, n-1]\)。 4. 计算点 \(R = kP\)。 5. 计算点 \(S = kQ\),若 \(S\) 的 \(x\) 坐标为 0,则返回步骤 3 重新选择 \(k\)。 6. 计算加密消息 \(C = m + x(S)\)。 7. 发送加密消息 \((R, C)\) 给接收方 \(A\)。 ##### 1.4 解密过程 接收方 \(A\) 收到密文 \((R, C)\) 后,可以通过自己的私钥 \(d\) 进行解密: 1. 计算点 \(T = dR\)。 2. 计算 \(x(T)\) 并解出原始消息 \(m = C - x(T)\)。 #### 2. MATLAB 实现 ##### 2.1 安全椭圆曲线的选择 在MATLAB中实现椭圆曲线密码系统之前,首先需要选择一条安全的椭圆曲线。通常选择形如 \(y^2 = x^3 + ax + b\) 的曲线,且 \(4a^3 + 27b^2 ≠ 0\),确保其非奇异。为了简化计算,常使用投影坐标系。 以下是一个MATLAB函数,用于根据给定的参数 \(a\)、\(b\) 和阶数 \(n\) 生成椭圆曲线上的点: ```matlab function E = EllipticCurve(a, b, n) if (4*a^3 + 27*b^2 == 0) error('Please choose safe parameters for the elliptic curve.'); end for i = 1:n for j = 1:n for k = 1:n if mod((j^2)*k, n) == mod((i^3)*k + a*i*k^2 + b*k^3, n) z = [i-1, j-1, k-1]; end end end end end ``` ##### 2.2 将汉字转化为数组 为了实现MATLAB对汉字的加密,首先需要将汉字转换为对应的ASCII码值。可以使用MATLAB内置函数完成这一任务: ```matlab function encodedStr = encodeChineseString(str) % Convert Chinese string to ASCII codes asciiCodes = double(str); encodedStr = asciiCodes; end ``` 通过以上方法,我们可以在MATLAB环境中成功实现椭圆曲线密码系统,并将其应用于汉字的加密与解密。这种技术不仅扩展了椭圆曲线密码的应用范围,也为保护敏感信息提供了更加强大的工具。
2019-12-21 22:07:46 133KB 椭圆曲线 matlab
1
采用C++实现了椭圆曲线算法,至少本人是测试运用成功过的,期望可以对大家有所帮助
2019-12-21 21:10:19 100KB ECC C/C++
1
作者Darrel Hankerson等,张焕国译。椭圆曲线密码学是目前流行的区块链技术的重要组成部分,也是密码学方面十分有前景的公钥密码技术。本书为该领域内的权威作品,在椭圆曲线密码学方面Google学术上被引量排名第一。
2019-12-21 20:52:07 13.34MB 密码学 椭圆曲线密码
1
椭圆曲线密码学导论(中文).pdf
2019-12-21 19:58:58 12.99MB 椭圆曲线密码
1
对应英文版的Guide+To+Elliptic+Curve+Cryptography.pdf 椭圆曲线密码学导论 不是文字版,但内容比较清楚
2019-12-21 19:35:39 12.98MB 椭圆 曲线密码 ECC 张焕国
1