0

この 1 つの関数は現在のクラスです。どのように呼び出すことができますか?

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
      //------
      //------

      String r = EncryptText<Cryptography.Aes>(myTextStringToEncode);
    }
      private string EncryptText<TSymmetricAlgorithm>(string input) where TSymmetricAlgorithm : SymmetricAlgorithm, new()
        {
            var pwdBytes = Encoding.UTF8.GetBytes("MY560Secratekey38433661283912");
            using (TSymmetricAlgorithm sa = new TSymmetricAlgorithm())
            {
                ICryptoTransform saEnc = sa.CreateEncryptor(pwdBytes, pwdBytes);

                var encBytes = Encoding.UTF8.GetBytes(input);

                var resultBytes = saEnc.TransformFinalBlock(encBytes, 0, encBytes.Length);

                return Convert.ToBase64String(resultBytes);
            }
        }
}
4

3 に答える 3

2
var result = EncryptText<MySymmetricAlgorithm>("my input");

少し異なるアプローチも考えてみることをお勧めします。

string EncryptText(SymmetricAlgorithm algo, string input);

欠点は、消費者がアルゴリズムのインスタンスの作成について心配しなければならないことです。ただし、no-param コンストラクターなしで実装を使用できます。さらに、インスタンスを再利用することもできます。

コードに最適なものを決定することをお勧めします。

于 2012-09-17T07:08:38.670 に答える
2

EncryptText<System.Security.Cryptography.Aes>("hello world")

例えば?!

継承階層 @ http://msdn.microsoft.com/en-en/library/system.security.cryptography.symmetricalgorithm.aspxを参照してください。

于 2012-09-17T07:09:30.823 に答える
1
var result = this.EncryptText<MySymmetricAlgorith>("blup");
于 2012-09-17T07:10:51.807 に答える