调用cryptlib接口3DES对称加密、信封加密、数字签名等

本文档演示了如何利用cryptlib库进行3DES对称加密、数字签名验证、自签名证书生成以及公钥加密信封的操作。通过示例代码详细解释了密钥库管理、公私钥对的使用以及加解密过程。

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


#include<iostream>
#include <string>
#include "Base.h" //提供base64转码功能
using namespace std;
#include "cryptlib.h"

int main()
{
	cryptInit();
        //cryptlib调用前必须执行init,调用完必须执行end
	cryptEnd();

	return 0;
}
/**
*
*cryptlib产生自签名证书
*
**/
void GenerateKey(){
	int* keyset;
	keyset = (int*)malloc(sizeof(int*)); //密钥库上下文
	int* cryptContext;
	cryptContext = (int*)malloc(sizeof(int*)); //加密上下文
	int* cryptCertificate;
	cryptCertificate = (int*)malloc(sizeof(int*)); //证书上下文
	int status = cryptKeysetOpen(keyset,CRYPT_UNUSED, CRYPT_KEYSET_FILE, "D:\\Private key file.p15", CRYPT_KEYOPT_CREATE);//创建密钥库,(CRYPT_KEYOPT_CREATE)
	status = cryptCreateContext(cryptContext,CRYPT_UNUSED, CRYPT_ALGO_RSA);//RSA算法的密钥上下文
	status = cryptSetAttributeString(*cryptContext, CRYPT_CTXINFO_LABEL, "test1",5);//密钥标签
	status = cryptGenerateKey(*cryptContext);
	status = cryptAddPrivateKey(*keyset, *cryptContext, "1234");//向密钥库添加私钥
	status = cryptCreateCert(cryptCertificate,CRYPT_UNUSED, CRYPT_CERTTYPE_CERTIFICATE);//创建证书
	status = cryptSetAttribute(*cryptCertificate, CRYPT_CERTINFO_XYZZY, 1);//设置为简单证书
	/* Add the public key and certificate owner name and sign the 
	certificate with the private key */
	status = cryptSetAttribute(*cryptCertificate, CRYPT_CERTINFO_SUBJECTPUBLICKEYINFO, *cryptContext);//证书公钥绑定
	status = cryptSetAttributeString(*cryptCertificate, CRYPT_CERTINFO_COMMONNAME, "test1",5);//证书CN
	status = cryptSignCert(*cryptCertificate, *cryptContext);//使用私钥自签发证书
	status =  cryptAddPublicKey(*keyset, *cryptCertificate);//向证书添加公钥
	status = cryptDestroyCert(*cryptCertificate);
	status = cryptDestroyContext(*cryptContext);
	status = cryptKeysetClose(*keyset);
}
/**
*
*从指定密钥库中获取私钥,并签名与验证
*
**/
void signature(){
	/*访问密钥库,获取私钥*/
	int* keyset;
	keyset = (int*)malloc(sizeof(int*));
	int* sigKeyContext;
	sigKeyContext = (int*)malloc(sizeof(int*));
	int status = 0;
	status = cryptKeysetOpen(ke
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值