我正在尝试调用此方法:
public string Decrypt5<TSymmetricAlgorithm>(string input) where TSymmetricAlgorithm : SymmetricAlgorithm, new()
{
var pwdBytes = Encoding.UTF8.GetBytes(_seed);
using (TSymmetricAlgorithm sa = new TSymmetricAlgorithm())
{
ICryptoTransform saDec = sa.CreateDecryptor(pwdBytes, pwdBytes);
var encBytes = Convert.FromBase64String(input);
var resultBytes = saDec.TransformFinalBlock(encBytes, 0, encBytes.Length);
Debug.WriteLine(Encoding.UTF8.GetString(resultBytes));
return Encoding.UTF8.GetString(resultBytes);
}
}
通过调用Decrypt5<TSymmetricAlgorithm>("myEncryptedStringBlahblahxyz");
但是我不断收到一个错误,即我必须使用具有公共无参数类型的非抽象类型,而不是 TSymmetricAlgorithm。是否有我可以使用的默认 TSymmetricAlgorithm 子类。我做错了什么?谢谢。
事实证明,使用RijndaelManaged
对象类型就可以解决问题。我通过反复试验发现了这一点。如果有人知道一种快速的方法,可以找到C#中所有原生类,该本机类对某个父抽象类(在本例中为SymmetricAlgorithm(进行子类化,请随时在评论中告诉我以备将来参考。我是 C# 的新手:-(