在Rust中是否有与Rust的win32crypt.CryptUnprotectData()等效的Rust

时间:2018-01-30 06:41:02

标签: winapi encryption rust pywin32 rust-cargo

在Python中,pywin32库提供了一个名为win32crypt的模块,该模块有一个名为CryptUnpotectData的方法,可以使用Windows API解密Windows加密数据。

这是我在Python中应用它的方式:

import win32crypt
# ...
password = win32crypt.CryptUnprotectData(EncrytedPassword, None, None, None, 0)

我找到winapi的绑定但我找不到CryptUnprotectData函数,我找到的最接近的是the CryptDecrypt function

这是我在Rust中的实现:

extern crate winapi;
let decrypted_password = winapi::um::wincrypt::CryptDecrypt(/* ???? */);

我不知道如何使用此功能,以及它是否会解密我的加密密码字符串并将其返回。我很乐意,如果有经验的Rust用户可以通过示例或解释为我揭示这一点。

1 个答案:

答案 0 :(得分:2)

如果您转到documentation for winapi(从crate pageREADME链接),您会找到一个大搜索框:

search box in docs

如果您键入" CryptUnprotectData"进入该搜索框,您将收到3个结果:

search results

单击第一个结果将引导您进入特定功能CryptUnprotectData。如Cannot call CryptDecrypt from the WinApi crate because it could not find the module中所述,您需要使用相应的功能标志来启用该功能(dpapi)。

正如README所述:

  

为什么没有关于如何使用任何东西的文件?

     

这个箱子只不过是对Windows API的原始绑定。如果你   希望知道如何使用Windows API中的各种功能   可以在MSDN上查找各种详细的项目   文档。

此功能的使用是described on MSDN