首先来看看什么是点的压缩。
椭圆曲线上的任一仿射点(x, y)(非无穷远点)都可以压缩成利用其y坐标的最后一比特(记为y*)和x坐标来表示,即(x, y*),这就是点的压缩。反过来,利用(x, y*)恢复y坐标,还原仿射点(x, y)的过程就称为点的解压缩。
利用点的压缩可以减少存储和传输时的数据量,但增加了数据处理时间。
代码中用参数point_conversion_form_t来表示是否进行点压缩,point_conversion_form_t的定义如下:
typedef enum {
POINT_CONVERSION_COMPRESSED = 2,
POINT_CONVERSION_UNCOMPRESSED = 4,
POINT_CONVERSION_HYBRID = 6
} point_conversion_form_t;
其中
POINT_CONVERSION_COMPRESSED 的值为 2,表示采用点压缩。
POINT_CONVERSION_UNCOMPRESSED的值为4,表示不采用压缩。
POINT_CONVERSION_HYBRID的值为6,表示混合使用,即既包含点压缩又包含未压缩。
为了节省资源,一般会用一个字节表示压缩形式和y坐标的最后一个字节(必要时)。假设用form来表示压缩形式,则表示压缩形式和y*的字节buf[0]为:
。 ………(5.16)
点的压缩很简单,直接用(x, y*)表示即可。但是怎么解压缩该呢,怎么恢复y坐标呢?简而言之,就是利用Weierstrass方程计算平方根。具体过程如下:

其中,Step2计算可以利用文件bn_sqrt.c中的函数BN_mod_sqrt()实现(函数BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p)的功能是计算a mod p的平方根)。
利用给定的压缩点(x, y*)来设置点坐标(x, y)的过程其实就是解压缩的过程:
point->X ← x
point->Y ← 取x3+ax+b的某一个平方(由y*决定)
point->Z ← 1
其中y*=1表示y坐标为奇数,y*=0表示y坐标为偶数。
───────────────────────────────────────
int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *point, const BIGNUM *x, int y_bit)
功能: 利用压缩点坐标来设置点坐标
输入: group,x【压缩点的x坐标】,int y_bit【y坐标最后一比特】
输出: point【不压缩的点】
返回: 1【正常】or 0【出错】
出处: ec_lib.c
调用: ▼ ec_GFp_simple_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *point, const BIGNUM *x_, int y_bit)
───────────────────────────────────────
代码的处理过程是,先通过解压缩计算出y坐标,然后直接调用设置仿射点坐标的函数EC_POINT_set_affine_coordinates_GFp(group, point, x, y)。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
RDVS2.0调试界面
Vishay推出车规级光伏MOSFET驱动器,提升高压系统可靠性并降低成本
铠侠UFS 5.0为端侧AI带来全新体验
TLC548C,TLC548I TLC549C,TLC549I 带串行控制8位模数转换器
英飞凌推出多相降压控制器和支持 PMBus 标准的负载点(PoL)
放大电路输出电流和电压的提升
TLC2543C,TLC2543I 12位开关电容型逐次逼近模数转换器
赛灵思宣传片
波本威士忌废料可以提供下一代超级电容器组件
浮置信号源差动输入隔离放大电路
to amine:问题请教!
龙虾硬件大赛来了!第十四届中国电子信息博览会(CITE2026)展前揭秘
英飞凌针对800 VDC架构AI数据中心推出基于CoolGaN高压IBC参考设计
大嘴业话:企业转型模式的探讨
[求助]谁给我介绍一下国内外计算机加固研究的情况好吗?小弟先在此谢过了!^_^
加速器驱动的MCU为汽车带来了更多AI的普及
TLC5602C,TLC5602M D/A转换器
第三届OpenHW开源硬件与嵌入式大赛总决赛现场实录
具有正、负120V输出的放大电路
你的虚拟双胞胎有朝一日可能拯救你的生命
TLC0831C_I,TLC0832C_I 通用串行输出8位A_D转换器
北京工业大学:基于FPGA的情绪检测程序与相关智能宠物的开发
德国公司高薪诚聘精英,成功举荐者也有奖金
TLC1542C_I_M_Q,TLC1543C_I_Q 10位开关电容逐次逼近模数转换器
精密电桥隔离放大电路
新人报到!向同志们敬礼!
财报PK:圣邦股份距离正面挑战ADI还有多远?
为极致触控而生 汇顶发布新一代高性能柔性OLED触控芯片GT9926
光耦线性隔离放大器3650
中南民族大学:基于虚拟环绕声的音频处理器设计