怎样对字符串进行加密/解密

本文介绍了直接调用CryptoAPI函数对字符串进行加密和解密的方法,包含初始化、加密、解密三个函数,给出了函数原型。还说明了编译条件,以及如何将这些功能封装到C++类中,提供了可复用的源码,适合初学者。

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

作者:John_Sheridan

[译者的话] 该文介绍了一种直接调用 CryptoAPI 函数对字符串进行加密和解密的用法,非常简单、实用。其中,有作者所封装的一个加密/解密类,是可以直接复用的源码,我想是能够解决我们的一些实际问题的。而且,将初始化函数封装在构造函数中,也显得比较巧妙,对于初学者不失为一篇好的教材。

用于加密/解密所需要的三个函数:

1、初始化 CryptoAPI 的函数。

2、加密函数。输入参数为原始字符串和一个密钥。

3、解密函数。输入参数为加密后的字符串和一个密钥。

这几个函数的原型如下:

BOOL SetupCryptoClient();
BOOL EncryptString(TCHAR* szPassword,TCHAR* szEncryptPwd,TCHAR
                          *szKey);
BOOL DecryptString(TCHAR* szEncryptPwd,TCHAR* szPassword,TCHAR
                          *szKey);
函数及其参数的含义如下:
BOOL SetupCryptoClient();
该函数初始化解密客户程序。
BOOL EncryptString(TCHAR* szPassword,TCHAR*
                          szEncryptPwd,TCHAR *szKey)

对一个字符串进行加密

1、szPassword 是原始字符串

2、szEncryptPwd 是 加密后的结果

3、szKey 是加密的密钥

BOOL DecryptString(TCHAR* szEncryptPwd,TCHAR*
                          szPassword,TCHAR *szKey)

对一个字符串进行解密

1、szEncryptPwd 是一个已经加密的字符串

2、szPassword 是解密后的字符串

3、szKey是解密密钥。它必须和该字符串在原来加密时所用密钥一致。

该程序是一个控制台程序,主要想说明加密/解密函数的用法。

编译条件

如果由于引用了HCRYPTPROV的数据类型,而使得编译无法通过,可用下面的办法解决:

1、 清除 #define WIN32_LEAN_AND_MEAN

2、 加上:#define _WIN32_WINNT 0x0400

3、 在链接设置中,添加库"advapi32.lib"

C++类的考虑

1、生成一个类,比如,CCryptString。

2、在构造函数中,调用初始化函数SetupCryptoClient,并且将结果保存在一个成员变量中。

3、将加密/解密函数直接封装在类的成员函数中。

第二个例子包含了一个类的用法。

关于该加密技术的背景信息,请阅读MSDN的有关内容。在Internet网上也有很多相关资料。 希望这个演示工程能够满足你的需要。

代码下载
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值