这一个功能是当前的类。我怎么称呼它?
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);
}
}
}
答案 0 :(得分:2)
var result = EncryptText<MySymmetricAlgorithm>("my input");
我建议您考虑一种稍微不同的方法:
string EncryptText(SymmetricAlgorithm algo, string input);
缺点是消费者不得不担心创建算法的实例。您可以使用没有no-param构造函数的实现。此外,您也可以重复使用实例。
最好决定什么最适合您的代码。
答案 1 :(得分:2)
EncryptText<System.Security.Cryptography.Aes>("hello world")
例如?!
请参阅继承层次结构@ http://msdn.microsoft.com/en-en/library/system.security.cryptography.symmetricalgorithm.aspx
答案 2 :(得分:1)
var result = this.EncryptText<MySymmetricAlgorith>("blup");