遅くなった、疲れた、そしておそらくかなり密集している....
キーを生成するマシンでのみ実行されるように、保護する必要があるアプリケーションを作成しました。今のところ、BIOS シリアル番号を取得してハッシュを生成し、XML RSA 秘密鍵を使用して暗号化しています。次に、改ざんされないように XML に署名します。公開鍵をパッケージ化して署名を復号化および検証しようとしていますが、署名を生成したユーザーとは異なるユーザーとしてコードを実行しようとするたびに、署名でエラーが発生します。
私のコードのほとんどは、私が知りたいほど RSA 暗号化に精通していないため、見つけたサンプル コードを変更したものです。以下は、私が使用していたコードと、これを正しく機能させるために使用する必要があると思ったコードです...
この時点で、私が作業していた元のコードがこれだったので、フィードバックをいただければ幸いです。このコードは、プログラムを起動するユーザーが最初にドキュメントに署名したユーザーと同じである限り、正常に機能します...
CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = "XML_DSIG_RSA_KEY";
cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
// Create a new RSA signing key and save it in the container.
RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(cspParams)
{
PersistKeyInCsp = true,
};
このコードは私がやるべきだと私が信じていることですが、同じユーザーであるか別のユーザーであるかに関係なく、何をしても署名を検証できません...
RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider();
//Load the private key from xml file
XmlDocument xmlPrivateKey = new XmlDocument();
xmlPrivateKey.Load("KeyPriv.xml");
rsaKey.FromXmlString(xmlPrivateKey.InnerXml);
これはキーコンテナ名と関係があると思います(ここでは本当にばかげているので失礼します)これが最初のケースで機能する原因と、 2番目のケース....
cspParams.KeyContainerName = "XML_DSIG_RSA_KEY";
アプリケーション ライセンスの生成時に秘密鍵で XML に署名/暗号化してから、公開鍵をアプリ ディレクトリにドロップし、それを使用してコードを検証/復号化する方法はありますか? 署名部分が正しく機能するようになれば、暗号化部分を削除できます。キーイング元のライセンスコードの出所を難読化するためのバックアップとして使用していました。
これは意味がありますか?私はまったくの馬鹿ですか?
誰かがこれで私に与えることができる助けをありがとう..