自写MFC实现 中点算法画直线、画圆、画椭圆,计算机图形学
2019-12-21 22:26:25 255KB MFC 画直线 画圆 画椭圆
1
每句代码都是经过深思熟虑后才写的,自认为运行起来还蛮符合老师要求的
2019-12-21 22:20:11 1.89MB 绝无虚假
1
matlab编写的基于几何距离的椭圆拟合,采用LM 迭代方法;因为采用迭代,所以对初值比较敏感,初值尽量接近真值,否则不容易收敛。
2019-12-21 22:20:02 3KB matlab;迭代
1
OpenCV截取图像的任意区域(ROI),规则的图形(圆、椭圆、矩形),不规则鼠标自己选择.
2019-12-21 22:16:40 507KB OpenCV ROI图形
1
计算机图形学中点画圆,Bresenham画圆,中点画椭圆java源码
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
使用eclipse开发的ecm大数分解算法
2019-12-21 22:03:01 64KB ecm java
1
神奇的数学之心,由幂函数、三角函数和椭圆函数组成,Android源码。
2019-12-21 22:01:57 34.77MB 心形 幂函数 三角函数 椭圆函数
1
使用Matlab编写的椭圆霍夫变换代码,方便初学者学习霍夫变换基本原理。使用时输入一副二值图像,可以预估待检测椭圆的长短轴、倾角等参数,减少运算时间。
2019-12-21 21:59:39 3KB Matlab 椭圆霍夫变换
1
给出椭圆曲线密码体制的公钥,私钥等参数,实现用椭圆曲线密码体制加解密文件
2019-12-21 21:53:09 415KB 椭圆曲线 ECC 加解密 C++实现
1