サーバーでC#を使用して文字列を復号化できるようにする必要がありますが、文字列はクライアントでcryptico.jsを使用した公開鍵暗号化を使用して暗号化されました。詳細については、最後のコンテキストを参照してください。
Crypticoは、次のような秘密RSAキーを提供します(注-「このような」-この質問用に新しいキーを作成しました):
Array ( [n] => 8029845567507477803775928519657066509146751167600087041355508603090505634905205233922950527978886894355290423984597739819216469551137046641801207199138209 [e] => 3 [d] => 5353230378338318535850619013104711006097834111733391360903672402060337089936682996269976597251251223844095913209399106464214877696419418951728015128013411 [p] => 102067954277225510613941189336789903269738979633396754230261162567549753196947 [q] => 78671563708406591396117399809764267229341143260756252277657051641634753921147 [dmp1] => 68045302851483673742627459557859935513159319755597836153507441711699835464631 [dmq1] => 52447709138937727597411599873176178152894095507170834851771367761089835947431 [coeff] => 26458340158787140383846156526777567128582042036682248240414722856369310516021
...さらに多くのメソッド。
私はこのようにそれを解読しようとしています:
RSAParameters parameters = new RSAParameters();
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
parameters.Exponent = encoding.GetBytes("3");
//dmp1
parameters.DP =
encoding.GetBytes("68045302851483673742627459557859935513159319755597836153507441711699835464631");
//dmq1
parameters.DQ =
encoding.GetBytes("52447709138937727597411599873176178152894095507170834851771367761089835947431");
//d
parameters.D =
encoding.GetBytes(
"5353230378338318535850619013104711006097834111733391360903672402060337089936682996269976597251251223844095913209399106464214877696419418951728015128013411");
//p
parameters.P =
encoding.GetBytes("102067954277225510613941189336789903269738979633396754230261162567549753196947");
//q
parameters.Q =
encoding.GetBytes("78671563708406591396117399809764267229341143260756252277657051641634753921147");
//n
parameters.InverseQ =
encoding.GetBytes(
"8029845567507477803775928519657066509146751167600087041355508603090505634905205233922950527978886894355290423984597739819216469551137046641801207199138209");
//coeff
parameters.Modulus =
encoding.GetBytes("26458340158787140383846156526777567128582042036682248240414722856369310516021");
RSA rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(parameters);
var decryptThis = encoding.GetBytes(ciphertext);
var result = rsa.DecryptValue(decryptThis);
resultString = encoding.GetString(result);
しかし、これは例外「不良データ」をチャックします。
C#の経験が豊富な人は、私が間違っているところについて何か考えを持っていますか?
ありがとう、
G
コンテキストの詳細:アプリのクライアント側とサーバー側の両方にパスワード強度チェック機能を実装しようとしていますが、サーバー側のコードのみを使用しています。クライアント側でこれを実現するために、推定パスワードをサーバーに送信し、その強度を判断してから、クライアントに表示されるスコアを返します。これは、サーバー上でパスワード強度チェックコードを維持するだけでよいことを意味します。追加のセキュリティ対策として、cryptico.jsライブラリを使用して推定パスワードを暗号化してから、サーバーに送信して判断します。