私は .NET 内で RSA がどのように機能するかについてもっと知りたいと思っていて、デフォルトでキーが Windows 内に保存されていることを示唆するこの役立つ投稿に出くわしました: https://stackoverflow.com/a/5845191/1181412
私の質問は、以下のサンプルコードを参照しています。その意図は、アプリケーション セッションの存続期間中のみワンタイム キーを生成することであると仮定します。
質問 1:以下の構造では、RSACryptoServiceProvider が同じ CspParameters オブジェクトにアクセスしている場合でも、クラス内の任意の場所で RSACryptoServiceProvider が作成されるたびに、PersistKeyInCsp フラグを false に設定する必要がありますか?
質問 2: CspParameters オブジェクトに CreateEphemeralKey フラグを設定すると、この例で PersistKeyInCsp を使用する必要がなくなりますか?
Public Class RSACrypto
Private RSAKey As CspParameters
Public Sub New(KeySize As Integer)
MyBase.New()
RSAKey = New CspParameters
Using RSA As New RSACryptoServiceProvider(KeySize, RSAKey)
RSA.PersistKeyInCsp = False
End Using
End Sub
Public Function PublicKey() As Byte()
Using RSA As New RSACryptoServiceProvider(RSAKey)
RSA.PersistKeyInCsp = False
Return RSA.ExportCspBlob(False)
End Using
End Function
End Class