DPAPI函数是CryptoAPI中少有的简单易用的加密函数,调用过程简单,其调用接口几乎不涉及密码学概念。Win32 DPAPI有4个函数,它们分别是CryptProtectData、CryptUnProtectData、CryptProtectMemory和CryptUnProtectMemory。

CryptProtectData和CryptUnProtectData有一个用户提示描述结构,应用程序可以在这里设定呈现给用户的提示对话框的出现时机和内容。代码示例如下:

//-------------------------------------------------------------------
// 初始化提示对话框结构. ZeroMemory(&PromptStruct, sizeof(PromptStruct));
PromptStruct.cbSize = sizeof(PromptStruct);
PromptStruct.dwPromptFlags = CRYPTPROTECT_PROMPT_ON_PROTECT;
PromptStruct.szPrompt = L"这是一个用户提示。"; // 实施数据加密保护
if(CryptProtectData(
&DataIn,
L"This is the description string.", // 说明
NULL, // 可选附加扰码,本例不用
NULL, // 保留
&PromptStruct, // 传入前面准备好的提示对话框结构
,
&DataOut))
{
printf("数据加密保护完成.\n");
}
else
{
printf("数据加密保护失败.\n");
} //---------------------------------------------------------------------------
// 进行数据解密还原操作
if (CryptUnprotectData(
&DataOut,
&pDescrOut,
NULL, // 附加扰码,必须与加密时所用的一致。
NULL, // Reserved
&PromptStruct, // 提示对话框描述结构
,
&DataVerify))
{
printf("解密出来的数据是: %s\n", DataVerify.pbData);
printf("数据的描述是: %S\n",pDescrOut); }
else
{
printf("解密错!");
}

最新文章

  1. jquery的css详解(二)
  2. [Sdoi2014]旅行 题解
  3. 强大的日志分析工具 -- NSLogger
  4. FragmentStatePagerAdapter.notifyDataSetChanged不刷新页面的解决的方法
  5. Unity3d 使用DX11的曲面细分
  6. JavaScript引用类型之Object类型
  7. Snacks
  8. Truffle 4.0、Geth 1.7.2、TestRPC在私有链上搭建智能合约
  9. (PMP)第8章-----项目质量管理
  10. CentOS下利用mysqlbinlog恢复MySQL数据库
  11. POJ 3683 Priest John's Busiest Day (2-SAT)
  12. [ACM_动态规划] UVA 12511 Virus [最长公共递增子序列 LCIS 动态规划]
  13. ASP.Net Core 2.2 MVC入门到基本使用系列 (三)
  14. BZOJ5017 Snoi2017炸弹(线段树+强连通分量+缩点+传递闭包)
  15. owin Oauth
  16. linux 查看内置命令
  17. ufw坑
  18. 微软MVP Round Table
  19. python-常用内置函数与装饰器
  20. Python下opencv使用笔记(七)(图像梯度与边缘检測)

热门文章

  1. TSQL--游标Dem
  2. WEB应用从服务器主动推送的方法
  3. DATATable转为json
  4. centos6.5安装配置网络
  5. EasyFastCMS系列教学课程——2、底层代码 ModelHelper与SQLHelper简介
  6. log(m+n)找第k大
  7. ACM-ICPC 2018徐州网络赛-H题 Ryuji doesn't want to study
  8. Redis + Redis-sentinel + keepalived部署过程
  9. Python——深拷贝和浅拷贝
  10. C# - 图片操作和Base64处理