1. ホーム
  2. c++

[解決済み] CryptProtectData関数で暗号化されたデータを復号化するには?

2022-02-16 04:53:54

質問

CryptProtectData関数はWindowsユーザーのパスワードを使ってデータを暗号化することは知っていますが、CryptUnprotectData関数を使えば、cryptterユーザーにログインした状態で復号化できます。

解決方法は?

CryptProtectDataは、現在のマシンIDやユーザー認証情報などの環境変数からキーを導き出す暗号化アルゴリズムを使用しています。これは、ほとんどの場合、暗号化したユーザーでなければ復号化できないことを意味します。

しかし、小さな注意点があり、鍵の構成に関わるユーザー認証情報を回避することができます。 任意の ユーザー 同じマシン .

提示されたように こちら を設定すると、dwFlags に "CRYPTPROTECT_LOCAL_MACHINE" を設定できます(dwFlags は enum なので、単純に uint 0). 暗号化されたものに対してCryptUnprotectDataを呼び出すときにdwFlagsをuint(0)に設定することを確認すれば、2つの関数は完全に対称になり、互いにうまく機能するようになるでしょう。私は個人的にこれを試して、それがうまくいくことを証明することができます。

確かに、同じマシンが必要というのは本当に迷惑な話ですが、何かを暗号化し、世界中の他のコンピューターがそれを解読できないことを確認するには、この方法が最も安全です。

お役に立てれば幸いです。 ナシュワン