SM2算法第十四篇:ECDH秘钥交换的C程序

参考:ECDH秘钥交换的C程序


ECDH秘钥交换与SM2秘钥交换类似,下面是我从网上下到的ECDH秘钥交换的C程序

#include 
#define ECDH_SIZE 33

void handleErrors()
{
	printf("Error occurred.\n");
}
static void disp(const char *str, const void *pbuf, const int size)
{
	int i=0;
	if(str != NULL){
		printf("%s:\n", str);
	}
	if(pbuf != NULL && size > 0){
		for(i=0;i


在VC++ 6中编译(compile),报错信息如下


SM2算法第十四篇:ECDH秘钥交换的C程序_第1张图片


出错原因在这篇博客“容易混淆的const”一文中说得很清楚,据此解决方案就是将34、35、52、53的右侧表达式进行强制类型转换,经编译没有报错,修改后完整代码如下


#include 
#define ECDH_SIZE 33

void handleErrors()
{
	printf("Error occurred.\n");
}
static void disp(const char *str, const void *pbuf, const int size)
{
	int i=0;
	if(str != NULL){
		printf("%s:\n", str);
	}
	if(pbuf != NULL && size > 0){
		for(i=0;i


组建(build),报错如下


SM2算法第十四篇:ECDH秘钥交换的C程序_第2张图片


出错原因在“ 解决error LNK2001 unresolved external symbol”一文中说得很清楚,缺少必要的库,添加库的方法为:工程—>设置—>连接—>对象/模块库—>添加ssleay32.lib  libeay32.lib,如下


SM2算法第十四篇:ECDH秘钥交换的C程序_第3张图片


在组建(build),成功了,运行(Ctrl+F5),结果如下


SM2算法第十四篇:ECDH秘钥交换的C程序_第4张图片









你可能感兴趣的:(SM2椭圆曲线)