计算SM2 Z及E值
来源:互联网 发布:winhex怎么恢复数据 编辑:程序博客网 时间:2024/06/05 05:02
// unsigned char p[]= { 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
// 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
unsigned char SM2_A[]= { 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC };
unsigned char SM2_B[]= { 0x28, 0xE9, 0xFA, 0x9E, 0x9D, 0x9F, 0x5E, 0x34, 0x4D, 0x5A, 0x9E, 0x4B, 0xCF, 0x65, 0x09, 0xA7,
0xF3, 0x97, 0x89, 0xF5, 0x15, 0xAB, 0x8F, 0x92, 0xDD, 0xBC, 0xBD, 0x41, 0x4D, 0x94, 0x0E, 0x93 };
// unsigned char n[]= { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
// 0x72, 0x03, 0xDF, 0x6B, 0x21, 0xC6, 0x05, 0x2B, 0x53, 0xBB, 0xF4, 0x09, 0x39, 0xD5, 0x41, 0x23 };
unsigned char xG[]={ 0x32, 0xC4, 0xAE, 0x2C, 0x1F, 0x19, 0x81, 0x19, 0x5F, 0x99, 0x04, 0x46, 0x6A, 0x39, 0xC9, 0x94,
0x8F, 0xE3, 0x0B, 0xBF, 0xF2, 0x66, 0x0B, 0xE1, 0x71, 0x5A, 0x45, 0x89, 0x33, 0x4C, 0x74, 0xC7 };
unsigned char yG[]={ 0xBC, 0x37, 0x36, 0xA2, 0xF4, 0xF6, 0x77, 0x9C, 0x59, 0xBD, 0xCE, 0xE3, 0x6B, 0x69, 0x21, 0x53,
0xD0, 0xA9, 0x87, 0x7C, 0xC6, 0x2A, 0x47, 0x40, 0x02, 0xDF, 0x32, 0xE5, 0x21, 0x39, 0xF0, 0xA0};
// 调用者保证pZ缓冲区大于32字节
int SM2_Get_Z(BYTE *pUserID,WORD wUserIDLen,BYTE *px,BYTE*py,BYTE *pZ)
{
if(pUserID == NULL || px == NULL || py == NULL || pZ == NULL)
{
return -1;
}
unsigned char szUIDBitLen[3] = {0}; // 前两个字节为 位长度
szUIDBitLen[0] = (BYTE)(wUserIDLen*8 >> 8);
szUIDBitLen[1] = (BYTE)(wUserIDLen*8 & 0x00FF);
sm3_context ctx;
sm3_starts( &ctx );
sm3_update( &ctx, szUIDBitLen, 2 );
sm3_update( &ctx, pUserID, wUserIDLen );
sm3_update( &ctx, SM2_A, 32 );
sm3_update( &ctx, SM2_B, 32 );
sm3_update( &ctx, xG, 32 );
sm3_update( &ctx, yG, 32 );
sm3_update( &ctx, px, 32 );
sm3_update( &ctx, py, 32 );
sm3_finish( &ctx, pZ );
return 0;
}
// 调用者保证pE缓冲区大于32字节
int SM2_Get_E(BYTE *pZ,BYTE *pData,ULONG ulDataLen,BYTE *pE)
{
if(pZ == NULL || pData == NULL || pE == NULL)
{
return -1;
}
sm3_context ctx;
sm3_starts( &ctx );
sm3_update( &ctx, pZ, 32 );
sm3_update( &ctx, pData, ulDataLen );
sm3_finish( &ctx, pE );
return 0;
}
- 计算SM2 Z及E值
- C语言 计算e及e的次方的近似值
- OpenGL,z值转深度值计算
- SM2的实现及优化(一)
- snooper taoism 2 中 sm2 辅助计算脚本
- 计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值
- 12以内阶乘、自然对数e及e的x次方的计算(Factorial)
- webpack 打包css z-index值被重新计算
- 国密SM2非对称加密及相关学习
- SM2算法第十篇:数字证书及CA的扫盲介绍
- 解读DES和SM4、RSA和SM2及SM3
- 如何在iOS中使用SM2进行数字签名及校验
- 解读DES和SM4、RSA和SM2及SM3
- 自然语言处理及计算语言学相关术语中英对译表(M~Z)
- 关于CSS3中多个DIV 盒子垂直叠加及空间堆放z-index计算问题
- 自然对数e及e的x次方的计算(Calculation of natural exponent e and x power of e)
- 计算当前最大z-index
- HDU1012 计算e~
- IOS面试问题总结
- cocos2d-x在android调用第三方sdk时,弹出的页面不能全屏显示,露出的游戏页面不停闪烁
- vim编辑器配置文件
- MATLAB 读写excel数据
- GetMessage与PeekMessage的区别
- 计算SM2 Z及E值
- ajax无刷新更新表格内容
- 浙大PAT 1012. 数字分类 (解题思路)
- U盘安装rhel-server-6.5
- 正式开张啦!
- MySQL常用维护管理工具
- oracle表空间
- HDU - 1495 非常可乐
- iOS 7:用代码解决视图控制器的View整体上移问题