SQL Serverに格納されて生成された非対称キーを使用してクライアントで暗号化を実行したいとします。SQL Serverの公開鍵を使用した.NetでのRSA暗号化?
私は、次のクエリを使用してDMVから公開鍵を取得することができます。
0x06020000002400005253413100020000010001008B656455D4C56392C45EEC3563203635F5F42DDA57069E7A880BF0AF055174A2A165DED75BA4E73E2A09BCBFAA50042B4E27354C1FEB3361F81C381AFF59A6A7
どのように私は、このバイナリを使用することができます。
SELECT public_key FROM sys.asymmetric_keys WHERE name = 'KeyName'
これには次の値を返します。ヴァル.NetのRSA_512
暗号化の公開鍵としてのue?私はここでsimilar questionsを検索しましたが、適切な解決策を見つけることができませんでした。私はXML形式の鍵が必要です。あるいは公開鍵の.Modulus
と.Exponent
を知る必要があります。これらのバイナリシーケンスから取得できますか?
EDIT:
ここでは、私は最後の行で例外 "キー有効ではありません" を取得する私のコード
SqlCommand cmd = new SqlCommand(string.Format("SELECT dbo.GetKey(@KeyName)", conn);
cmd.Parameters.AddWithValue("@KeyName", ConfigurationManager.AppSettings.Get("PublicKeyName"));
PublicKey = (byte[]) cmd.ExecuteScalar();
var rsa=new System.Security.Cryptography.RSACryptoServiceProvider(Convert.ToInt32(ConfigurationManager.AppSettings.Get("KeyLength")));
rsa.ImportCspBlob(PublicKey);
EncryptedData = rsa.Encrypt(Data,false);
です。
これは動作しません。 'ImportCspBlob()'は警告を出しませんが、 'rsa'オブジェクトから' Encrypt() 'メソッドを使用しようとする限り、私は"無効なキー "例外を受け取ります。興味深いことに、キーのサイズの合計はわずか84バイトです - それは正しいですか? –
あなたの質問の価値と私のために働く...これは本当の価値ですか? –
84バイトが672ビット、OKと見える –