問題タブ [rsacryptoserviceprovider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - RSA_signおよびRSACryptoProvider.VerifySignature
.NETで利用可能なMicrosoft暗号化プロバイダーを使用して、暗号化にOpenSSLを使用するコードを取得し、C#で記述している別のプログラムをうまく処理する方法を理解しようとしています。
もっと要点を言えば、私はC#プログラムにOpenSSLコードによって生成されたRSAメッセージ署名を検証させようとしています。署名を生成するコードは次のようになります。
C#では、次のようにします。
- 反対側の公開鍵を
RSACryptoServiceProvider
オブジェクトにインポートします - メッセージとその署名を受信します
- 署名を確認してみてください
最初の2つの部分が機能しています(RSA暗号化テキストをC#コードからCのOpenSSLコードに送信し、正常に復号化できたため、公開鍵が正しく読み込まれていることを確認しました)
C#で署名を検証するために、RSACryptoServiceProviderのVerifySignatureメソッドを使用してみましたが、機能しませんでした。そしてインターネットを調べてみると、.NETがOpenSSLとは異なる方法で署名を生成していることを指摘する漠然とした情報しか見つかりませんでした。それで、誰かがこれを達成する方法を知っていますか?
編集
リクエストがあったので、これがC#側です。
asp.net - RSAキーコンテナを開くことができませんでした
XPホームを実行している古いマシンでASP.NETサイトを開発してきました。最近、新しいWin 7 PCを入手し、すべてのプロジェクトファイルを移動しました。プロジェクトを実行しようとすると、次のエラーメッセージが表示されます。
"Failed to decrypt using provider 'MyRsaProtectedConfigurationProvider'. Error message from the provider: The RSA key container could not be opened."
を使用してweb.configファイルの一部を暗号化したことに気付きましたRSA encryption
。ここに問題があります。新しいマシンで使用できるように、そのキーを再び機能させる方法がわかりません。古いマシンからキーをエクスポートし、次を使用してインポートしました。
aspnet_regiis -pi "RSAProviderName" "C:\RSA_configkey.xml"
これは正常にインポートされました。次にプロジェクトを実行しましたが、同じエラーメッセージが表示されました。私はそれが許可のことかもしれないと思ったので、私は走りました:
aspnet_regiis -pa "RSAProviderName" "\Desktop" -full
これも成功しましたが、それでもエラーが発生します。読んでみると、「\ Desktop」(Desktopは私のマシン名)の代わりに「ASPNET」を使用している人がいます。ただし、「ASPNET」を使用しようとすると、次のようになります。
No mapping between account name and security IDs was done. <Exception from HRESULT = 0x80070534
これが修正されるまで私はプロジェクトに取り組むことができないので、どんな助けでも大歓迎です。ありがとう!
c# - C# で KeyContainer に権限を設定しようとしても効果がない
NetworkService アカウントがキーにアクセスできるようにプログラムで許可するために、次のコードを使用しています。
このコードはエラーなしで実行されますが、キー コンテナーのアクセス許可には影響しません。
ただし、コマンドライン ツール aspnet_regiis を使用して同じことを行うと、完全に機能します。
完全な管理者権限で実行しています。これらの権限で実行していない場合、例外がスローされます。また、最初にキーを作成したユーザーとして実行しています。
キー コンテナには、常に次のアクセス ルールがあります。
aspnet_regiis を使用すると、SID S-1-5-20 がこのリストに追加されます。コードから影響を与えることはできません。
AddAccessRule の代わりに SetAccessRule を使用するだけでなく、sid からセキュリティ識別子を文字列形式で作成しようとしました。
コードからこの ACL リストに実際に影響を与える方法はありますか?
c# - RSA での暗号化/復号化時に CryptographicException が断続的に発生する
C# で RSA を使用してデータを暗号化および復号化しようとしています。次の MSTest 単体テストがあります。
復号化中に失敗しますが、たまにしかありません。ブレークポイントを設定してテストを実行すると、パスするようです。これにより、復号化が正常に行われるのに間に合うように何かが終了していないのではないかと考え、デバッグ中にステップスルーを遅くすると、完了するのに十分な時間が与えられました. 失敗した場合、失敗したと思われる行decryptedBytes = rsa.Decrypt(bytesToDecrypt, false);
は次のメソッドにあります。
次の例外で失敗します。
System.Security.Cryptography.CryptographicException: 不正なデータ
私のEncrypt
方法は次のとおりです。
ByteConverter
全体で使用される は、次のとおりです。
.NET を使用した RSA 暗号化と復号化に関する StackOverflow に関するいくつかの質問を見てきました。 これは、秘密鍵で暗号化し、公開鍵で復号化しようとしたことが原因でしたが、私はそうしているとは思いません。 この質問には私と同じ例外がありますが、選択した回答は OpenSSL.NET を使用することでした。
私は何を間違っていますか?
c# - RSACryptoServiceProvider と openSSL 間の相互運用性
RSACryptoServiceProvider
キーペアを取得するために .NET クラスを使用しました。
これを openSSH で使用したいのですが、鍵の形式が似ていません。公開鍵と秘密鍵の両方を openSSH が使用できるファイルに変換する方法を知っている人はいますか?
ありがとう!
c# - C# または C 向けの高性能 RSA 実装
多くの RSA 署名操作を実行する Web サービスがあります。.net の CryptograhyProvider を使用します。これは、Windows の管理されていない CyptoAPI を使用します。
私はしばしばこのエラーがあります:
System.Security.Cryptography.CryptographicException: Der RPC-Server ist für diesen Vorgang zu stark ausgelastet. [=rpc サーバーがビジー状態のため、トランザクションを完了できません]
System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr) System.Security.Cryptography.Utils._ImportKey(SafeProvHandle hCSP, Int32 keyNumber, CspProviderFlags flags, Object cspObject, SafeKeyHandle& hKey) System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters (RSAParameters パラメーター)
これを修正しようとする代わりに、RSA 署名操作を高性能 RSA C 実装への DLLImport に置き換えたいと思います。
誰かがそれを知っているか、または推奨できますか?
OpenSSL は MS CryptoApi よりも高速ですか? また、キーをロードすると深刻なオーバーヘッドが発生する可能性があると思います。
ありがとう!
compact-framework - 別のアプリケーションは、RSACryptoServiceProvider を使用して、キー コンテナーに格納されている秘密キーにアクセスできますか?
私はRSACryptoServiceProvider
公開鍵と秘密鍵のペアを生成するために使用しcspParameters
、オブジェクトを使用してそれをキーコンテナーに格納しています。
私の問題は、キー コンテナーに秘密キーを格納した後、別のアプリケーションがキー コンテナーにアクセスして、生成した秘密キーを取得できることです。
はいの場合、キーのセキュリティが侵害されていますね。
どうすればこれを回避できますか? 生成された秘密鍵を対称暗号化アルゴリズムで暗号化する必要がありますか?
c# - RSACryptoServiceProvider によるファイルの暗号化/復号化
C# で RSA アルゴリズムを使用してファイル (pdf、txt、doc 型) を暗号化/復号化する必要があります。XMl ファイルからキーをインポートします。
私はこの方法を使用します
ERROR MESSAGE="復号化するデータが、このモジュラスの最大値である 256 バイトを超えています。"
私を助けてください
windows - MS CSP:AT_SIGNATUREとRSA_KEY_SIGN(およびAT_KEYEXCHANGEとCALG_RSA_KEYX)の違い
会社が販売しているスマートカード用のCSPライブラリ(CryptoAPI用)を作成しています。
秘密鍵のAT_SIGNATURE鍵タイプとCALG_RSA_SIGNアルゴリズムの違いについて質問があります(AT_KEYEXCHANGEとCALG_RSA_KEYXについても同じです)。
MSDNサイトに何が書かれているのかは知っていますが、CPGenKey()関数の呼び出しでCALG_RSA ...アルゴリズムのいずれかが指定されている場合、CSPDLLはどのように具体的に機能する必要がありますか?つまり、セッションRSA秘密鍵を生成する必要がありますか、それとも鍵を生成してカードに保存する必要がありますか?または、CPAcquireContext()呼び出し(CRYPT_VERIFY_CONTEXTなど)で指定されたフラグに依存し、AT_SIGNATUREを「署名のデフォルトアルゴリズム」として定義する必要があります。これは、カードの場合はRSAですか。
ありがとう
c# - RSACryptoServiceProvider KeyContainer がタイムアウトしているように見えますか?
私はこのようにRSACryptoServiceProviderを使用しています...
次に、Outlook プラグイン Windows フォーム アプリケーションをオフにして、このコードを使用しているアプリケーションを再びオンにした後、データの暗号化を解除しようとしました。復号化コードは次のようになります...
指を置くことができない何かが現れるまで、うまく機能します。日付が変わったようなものかどうかはわかりません。データを復号化しようとすると、「不良データ」エラーが発生します。ここでも、一定の時間が経過するか、アプリをオフにするか、ユーザーがログオフするまで、うまく機能します。何が原因なのかわからず、特定できません。テキストファイルから暗号化されたデータを吹き飛ばし、それを再作成して復号化した瞬間、問題はありません。暗号化/ファイルへの保存とファイルからの読み取り/復号化の間にアプリケーションを再起動しても、うまく機能します! 何かが起こり、CspParameters の有効期限が切れる原因を理解するのに十分な KeyContainers を知りません。