打印加密解密的数据、公钥私钥的函数,记录一下,方便以后直接使用

本文档详细介绍了如何使用C语言实现数据的打印,包括加密解密后的数据和公钥私钥的展示。通过`print_data`和`test`函数,展示了数据的十六进制格式加密解密过程,同时展示了公钥结构和导出公钥私钥的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

打印加密解密数据的函数:

//函数定义
void print_data(const char *string, unsigned char*data, int size)
{
	int i;

	printf("---------------------------------------------\n");
	printf("%s:\n", string);
	for(i=0; i<size; i++)
	{
		printf("%02x ", data[i]);
		if((i%16) == 15)
			printf("\n");
	}
	if(size%16)
		printf("\n");
	printf("---------------------------------------------\n");
}

//函数调用
void test()
{
	unsigned char decdata[16];
	unsigned int declen;

	r = SDF_Decrypt(hSessionHandle, hKey2, SGD_SM1_ECB, NULL, encdata, enclen, decdata, &declen);
	if(r)
	{
		printf("decrypt data fail:%x\n", r);
		return r;		
	}

	print_data("decrypt data:", decdata, declen);  //打印数据

}

打印公钥私钥的函数:


//宏定义
#define LOG_DATA(d, l)\
do\
{\
	int i;\
	for(i=0;i<l;i++)\
	{\
		if((i+1) % 16) \
			printf("%02X ", d[i]);\
		else\
			printf("%02X\n", d[i]);\
	}\
	if(i % 16) printf("\n");\
}\
while(0)
	

//公钥结构体定义
typedef struct RSArefPublicKey_st
{
	unsigned int bits;
	unsigned char m[RSAref_MAX_LEN];
	unsigned char e[RSAref_MAX_LEN];
}RSArefPublicKey;


/* RSA */
#define RSAref_MAX_BITS		2048
#define RSAref_MAX_LEN  		((RSAref_MAX_BITS + 7) / 8)


//调用
void test2()
{
	RSArefPublicKey rsapubkey;

	r = SDF_ExportEncPublicKey_RSA(hSessionHandle, i, &rsapubkey);
	if(r)
	{
		printf("export rsa enc public key fail:%x\n", r);
		return r;
	}
		
	LOG_DATA(rsapubkey.m, RSAref_MAX_LEN);  //打印数据
	LOG_DATA(rsapubkey.e, RSAref_MAX_LEN);
}

在这里插入图片描述

其实这两个函数基本相似,都差不多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值