良い一日。
キーのプライベート (パブリックではない) 部分でメッセージを暗号化し、パブリックで復号化するように Windows CryptoAPI に教える必要があります。これは、ユーザーが読み取ることはできるが変更できない情報をユーザーに提供するために必要です。
現在の仕組み:
コンテキストを取得します
CryptAcquireContext(@Prov, PAnsiChar(containerName), nil, PROV_RSA_FULL, 0)
キーペアを生成する
CryptGenKey(Prov, CALG_RSA_KEYX, CRYPT_EXPORTABLE, @key)
暗号化 (問題はここにあります。「キー」 - キーペアであり、関数はその公開部分を使用します);
CryptEncrypt(key, 0, true, 0, @res[1], @strLen, buffSize)
復号化 (ここでも同じ問題、鍵の秘密部分を使用)
CryptDecrypt(key, 0, true, 0, @res[1], @buffSize)
ご清聴ありがとうございました。
アップデート
はい、デジタル署名やその他の方法を使用できます...
問題は、1 つのデータベース フィールドを暗号化し、それを変更できるのは私だけである必要があることです。私のプログラムの助けを借りてのみ、このフィールドを読み取ることができます (誰かが逆コンパイルして公開鍵を取得するまで)。これは対称キーとデジタル署名で行うことができますが、別のフィールドを作成して別のキーを保存する必要があります...
どうにかして WIN API に自分のやりたいように教えられることを願っています。私は RSA でそれができることを知っており、何らかの方法で WinAPI がこの機能をサポートすることを願っています。