0

这一功能是当前类。我怎么称呼它?

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);

缺点是消费者不得不担心创建算法的实例。不过,您可以使用没有无参数构造函数的实现。此外,您也可以重用实例。

最好确定最适合您的代码的内容。

于 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 回答