椭圆曲线公钥密码加密方法的C语言实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{k=rand ( )%n1;
p11=mul_p (p,k);
p22=mul_p (q,k);
( 下转第 11 页)
54
科技信息
○科教视野○
SC IE N C E IN F O R M A T IO N
2007 年 第 10 期
础和严谨的板书, 凭借着扎实的教学功底在课堂上传授着知识, 学生 在台下聚精会神的听着、看着, 积极地思维着, 可以将一些概念记得更 牢固, 也时常能从上中得到启示。
一 是 现 代 教 育 技 术 教 学 应 遵 循 “学 生 为 主 体 , 教 师 为 主 导 ”的 原 则。应用现代教育技术教学其目的就是提高教学效率, 提高学生学习 效果, 所以应以学生理解和掌握知识为目的。
二是现代教育技术的应用主体是软件, 建议广大教师认真学习, 结 合 自 己 所 教 学 科 和 学 生 实 际 努 力 提 高 软 件 的 开 发 与 应 用 水 平 。但 同 时应该注意课件的制作和使用应以实现最终教学目的为宗旨, 应避免 出现重形式轻内容的不良现象。
参考文献 [ 1] 尹俊华. 教育技术导论[ M] . 北京:高等教育出版社, 1996. [ 2] 钟启泉. 现代教育学基础[ M] .上海:上海教育出版社, 2003. [ 3] 袁振国. 现代教育学[ M] . 北京:教育出版社, 2000.
●
( 上接第 54 页) if (p22.x! =0) break; }
拒的相对于 RSA 的优越性, 将会成为未来采用的潮流。基 于 这 种 情
况, 本文在简单论述了椭圆曲线的加密算法的原理的基础上, 用 C 语
言编程实现了该加密方法。本设计是以 Turbo C3.0 为编译系统的。程
序运行时, 从键盘输入一段字符, 由程序进行加密与解密, 输出的结果
是加密后的密文和解密后的明文。多次实验结果验证了程序的正确
1.引言
在计算机、通信和网络等技术迅猛发展的推动下, 信息技术、信息 产业和信息网络在社会经济的各个领域发挥的作用日益突出, 并逐渐
程中我采取逐个读取字符串中的字符, 用它的 ASCⅡ代码表示成域元 素, 对该字符进行加密, 并将密文显示出来。加密后的结果存储在密文 结构类型的数组中, 用于接下来的解密。
图 5 曲线选取
2.u=#E(Fp)≠P, 保证 E 不是“反常曲线”。 3.对 v=1, 2, 3, …, 10, Pv- 1 不能够被大素数 r 整除。 我是采取随机法选取的, 该算法的流程图如下图 5。 3.3 密钥的生成 系统生成后, 每个使用者(包括 A 和 B)都要执行下列步骤计算: (1)在区间[1,n- 1]随机选取一个整数 d, 这个随机数作为私有密钥, 不公开。 (2)计算点 Q=dP, Q 点是公开密钥, 连同 P 点及其阶 n 一起公开。 完成了求解曲线 的 阶(曲 线 的 点 数), 基 点 的 阶 , 椭 圆 点 的 加 法 、加 倍和 n 倍以后, 下面就是利用椭圆曲线来加密的过程了。 3.4 加密过程:用户要发送的信息存储在一个 字 符 数 组 中 , 加 密 过
关键词: 信息安全; 加密; 椭圆曲线密码; C 语言 Abstr act: As the rapid developments of computer network and telecommunication, the problem of information security has become more and more important, which is needed to be solved urgently. An effective method to solve this problem is to encrypt. This dissertation studied on Elliptic Curve Cryptosystem (ECC) in practical point of view. We discussed the mathematic background about the arithmetic of Elliptic Curve Cryptosystem and the principle of the ECC algorithm. My main job is using C language to design and implement the algorithm. Key wor ds: information security, encryption, Elliptic Curve Cryptosystem, C language
传统的教学手段与现代教育技术穿插应用, 在网上收集各种实物 资料: 如文字资料、图片资料、标本等, 教师再通过语言魅力、逻辑魅力 来实现教学目标。传统教学手段与现代教育技术应呈现一种交叠之 势。不同教学手段的运用在不同的对象中都有发展的潜力, 值得教师 去发现和运用。
现代教育技术正为现代教育改革和发展发挥着强大的作用, 将成 为教育发展的必然趋势。为更好地开发和应用现代教育技术, 使教学 水平不断提高, 在此提出以下几点建议:
使得 Q=xP, 则椭圆曲线离散对数问题就是由给定的 P 和 Q 确 定 出 x。
这是非常困难的。
3.椭圆曲线加密算法的 C 语言实现
3.1 准备工作
用 C 语言实现椭圆曲线密码时应包括如下的基本运算: 求曲线的
阶( 曲线的点数加上无穷远点) , 基点的阶, 椭圆点的加法, 椭圆点的加
倍, 椭圆点的 n 倍,由于这部分的程序较为简单,就不附在文中了。
3.2 系Байду номын сангаас的建立
首先是选取一个有限域 Fp, 在设计过程中, 我选取 p=127( 此处未
定义一个大素数) , 确定了有限域后就是选取合适的曲线。由于椭圆曲
线公钥密码的安全性基于椭圆曲线上离散对数问题的难解性, 所以一
条 曲 线 应 满 足 下 列 条 件 [3]: 1.曲线的阶 u=#E(Fp)应该被一个大素数 r 整除。
性。
2.椭圆曲线公钥密码体制
椭 圆 曲 线 公 钥 密 码 的 安 全 性[2]基 于 椭 圆 曲 线 离 散 对 数 问 题 的 难 解
性。这是因为椭圆曲线 E(Fp)中所有点按点的加法规则组成一个有限
Abel 群, 因此, 在椭圆曲线点群上存在下面的离 散 对 数 问 题 : P 是 E
(Fp)上一个点, 假设点 Q 是 E(Fp)上为 P 的倍数的点, 即存在整数 x>0,
用 C 语言实现加密的过程如下
函数 codec ( )实现逐个字符的加密, 参 数 是 明 文 字 符 和 基 点 的 阶
n。
struct code codec (char m1,int n1)
{struct code mw1;
struct point p11,p22;
int k;
while (1)
现代教育技术与传统教学的运用应注意: 多媒体教学不是万能 的, 不可以取代一切传统的手段。教学方法和手段是为教学服务的, 达 到教学目标是最重要的。有些可以用传统的手段解决的问题, 就不必 要为用而用, 这样反而有哗众取宠之嫌。在运用现代教育技术手段教 学的过程中, 传统的手段亦非常重要, 比如板书就有一定总结价值。即 使没有在黑板上留下痕迹, 也必须留下电子板书。在一些多媒体课件 中, 忽视了老师的主导作用和学生的主体作用。有的老师可能只是充 当一个放映员, 有的课件则不适合常规课堂教学。有些软件, 教师无法 根据课堂情况及时调控, 从而限制了教师的主观能动性的发挥。
传统的教学手段与现代的教学手段在教学中发挥着不同的作用, 不能孤立的看待, 两者应该 有 机 的 整 合 。 根 据 不 同 的 学 校 、不 同 的 学 生、不同的教学内容, 手段的运用是有侧重点的, 即不能抱着传统的东 西一直用下去, 毕竟时代在 不 断 地 要 求 新 的 内 容 、不 断 地 更 新 旧 的 内 容, 也不能一味的赶时髦, 不具体分析, 没有目的地运用现代教学手 段。一堂课学生学习的状况如何, 无论是传统的方法, 还是现代的手 段, 教师都要及时了解学生是否理解掌握了知识点, 是否达到能力培 养的目的, 我认为教师应该明确手段是为教学目的而服务的。
{for (i=0;i<fq&&(mw1.c! =(p2.x*i)%fq);i++); m=i; } return m; } 3.6 结果分析:在程序调试是添加主函数 main ( )即可。 例 1: 从键盘输入“I am a student”, 基点是(3,44), 加密得到的密文 是: (29,17,Ω) (29,17,!) (29,17,!) (29,17,") (29,17,!) (88,98,S) (88,98, ▲) (29,17,¢) (29,17,∑) (29,17, █ ) (29,17,J) (88,98,7) (88,98,w) (29,17, ∑) 解密后输出的结果是: I am a atudent。结果证明, 本程序是正确 的, 可以用于加密和解密。 4.结论 本设计达到了预期的基本功能, 但在程序设计中依然存在不少问 题。以下是本程序需要改进的地方。 (1)程 序 设 计 时 的 有 限 域 的 选 取 并 未 按 要 求 取 大 素 数 , 而 是 小 素 数。 (2)求 椭 圆 点 的 倍 数 及 计 算 曲 线 的 阶 的 实 现 不 理 想 , 因 为 若 是 选 取大素数时, 使用该程序需要较长的计算时间, 在算法的时间度上需 要改进。 (3)随机数的选取是直接利用标准 C 中的库函数 rand()。该函数产 生的是有规律的伪随机数, 不是真正的随机。若要随机选取一个数, 则 需用户写一个随机数产生函数。科
题。信息安全中最核心的技术是密码技术, 基本上可分为三类[1]: (1)序
列密码。(2)对称密码( 又称分组密码) , 如 DES, AES。(3)非对称密码( 又
称 公 钥 密 码 ) , 如 RSA, 椭 圆 曲 线 密 码 (Elliptic Curve Cryptosystem)
ECC。RSA 是目前较为流行的公钥算法, 但 ECC 有着许多让人无法抗
三是现代教育技术教学观念不仅仅是教学设备现代化, 更重要的 是教学观念的现代化, 教师素质的现代化。所以必须不断学习新概念、 新知识, 不断提高自身素质, 积极推进现代教育技术的发展和应用。
四是认真研究如何高效的组织课堂教学, 把优秀课件与传统教学 手段相互整合, 有效地进行课后答疑, 研究多媒体条件下改善考试考 核方式等, 从而提高教学水平。
科技信息
○计算机与信息技术○
SC IE N C E IN F O R M A T IO N
2007 年 第 10 期
椭圆曲线公钥密码加密方法的 C 语言实现
郭其标 ( 嘉应学院计算中心 广东 梅州 514031)
摘要: 随着计算机网络与通信技术的迅速发展, 信息安全问题日益突出。解决此问题的一种有效方法是数据加密与解密技术。本文从实现 的角度, 对椭圆曲线公钥密码加密方法进行了研究。论述了椭圆曲线运算的数学背景, 以及椭圆曲线加密算法的原理, 我的主要工作是用 C 语 言编程实现了该方法。
主 导 国 民 经 济 和 社 会 发 展 的 过 程 。 但 是 随 着 信 息 化 、网 络 化 的 迅 速 推
进, 信息安全问题已成为急需解决的重大问题。如何对网络中传输的
数 据 进 行 保 密 、保 密 性 高 不 高 关 系 到 个 人 隐 私 和 利 益 、商 业 秘 密 、国 家
机密等。在与日俱增的网络活动中, 人们越来越关心信息安全这个问
当然, 各种教育技术, 传统的与现代的各有所长。在当今社会, 传 统教学技术仍然大有用武之地, 如 挂 图 、模 型 、标 本 、实 物 都 能 够 以 直 观、具体的形象给学生以较 强 的 感 性 认 识 ; 像 媒 体 音 依 靠 视 频 和 声 音 能够给学生以视觉与听觉的综合感官刺激; 仿真模拟教具可以为学生 提供反复练习的机会, 培养学生严肃认真的工作态度和正确规范的操 作技能。所以说, 教育技术的选用不是越新越好、越现代化越好, 而是 根据需要辅助表达的对象, 立足现有的教学条件, 因地制宜, 把传统教 学技术与现代教育技术进行科学的优化组合使用, 达到扬长避短、相 互补充的目的。要不断地在教学中摸索、实践, 才能最终找到一个最适 自己学科的结合点。从而激 发 学 生 学 习 兴 趣 和 求 知 欲 , 使 学 生 由 “学 会 ”变 为 “会 学 ”, 由 “要 我 学 ”变 为 “我 要 学 ”, 促 进 学 生 素 质 的 全 面 发 展。科
mw1.c=(m1*p22.x)%fq; mw1.x=p11.x; mw1.y=p11.y; return mw1; } 3.5 解密过程:B 接收到 A 发过来的密文后执行解密。 用 C 语言实现解密的过程如下 函数 decodec ( )实现逐个字符的解密, 参数是密文和密钥,返回值 是字符。 char decodec (struct code mw1,int d1) { struct point p1,p2; char m; int i; p1.x=mw1.x; p1.y=mw1.y; p2=mul_p (p1,d1); m=(mw1.c/p2.x)%fq; if ((mw1.c%p2.x)! =0)