littlebot
Published on 2025-04-10 / 0 Visits
0

【源码】基于C语言的轻量级椭圆曲线密码实现库

项目简介

本项目名为 micro - ecc,是基于C语言实现的小型且快速的ECDH和ECDSA库。它适用于8位、32位和64位处理器,能抵抗已知的侧信道攻击,代码量小且无需动态内存分配。

项目的主要特性和功能

  1. 安全可靠:可抵抗已知的侧信道攻击,保障密码运算的安全性。
  2. 跨平台支持:用C语言编写,支持8、32和64位架构,为AVR、ARM和Thumb平台提供可选的GCC内联汇编。
  3. 标准曲线支持:支持5种标准曲线,包括secp160r1、secp192r1、secp224r1、secp256r1和secp256k1。
  4. 低资源占用:代码体积小,且不进行动态内存分配。
  5. 许可证友好:采用BSD 2 - 条款许可证。

安装使用步骤

代码使用

将uECC文件复制或通过符号链接到你的项目中,然后在代码里使用 #include "inc/uECC.h" 来调用micro - ecc的函数,具体函数文档可查看uECC.h。

编译说明

  1. 该项目可使用任何支持stdint.h的C/C++编译器进行编译,包括Visual Studio 2013。
  2. 若要更改uECC编译时选项的默认值(如 uECC_OPTIMIZATION_LEVEL),需在Makefile等文件中进行修改,确保uECC.c以所需的值进行编译,例如使用 -DuECC_OPTIMIZATION_LEVEL = 3
  3. 为Thumb - 1平台编译时,必须使用 -fomit - frame - pointer GCC选项(使用 -O1 或更高优化级别编译时默认启用)。
  4. 为ARM/Thumb - 2平台编译且 uECC_OPTIMIZATION_LEVEL >= 3时,必须使用 -fomit - frame - pointer GCC选项(使用 -O1 或更高优化级别编译时默认启用)。
  5. 为AVR编译时,必须启用优化(使用 -O1 或更高优化级别编译)。
  6. 在Windows环境下构建时,需要链接 advapi32.lib 系统库。

点表示说明

压缩点采用http://www.secg.org/sec1 - v2.pdf中定义的标准格式表示;未压缩点采用标准格式,但无 0x04 前缀。除 uECC_compress() 外,所有函数仅接受未压缩点,可使用 uECC_compress()uECC_decompress() 在压缩和未压缩点表示之间进行转换,私钥采用标准格式表示。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】