我想在我的程序中加密一个短文本框或字符串(不是文件),以使其内容不可读,或者使用简单的安全加密(如任何敏感密码等)对其进行加密。在 Visual Basic 中,很容易做到这一点,当我在那里复制它时,它们在我的 C# 中不起作用。我找不到合适的东西。只有非常困难的示例需要大量代码,这些代码通常会引发很多错误,并且需要您自己设置任何复杂的密钥或密钥对或散列、utf 编码或两者兼而有之以使其正常工作,但它永远不会。我对这一切一无所知,我只需要一个简单的函数,它可以双向加密。对于 C# 来说找不到类似的东西,它确实可以正常工作并且可以向前和向后执行作业。
或者我将如何让下面的代码示例工作,这是最有希望的一个:如果我在 button1_click 事件中将它复制到我的 C# 中,它会给我很多错误:
错误 1:类型或命名空间定义或预期文件结尾
错误 2:找不到类型或命名空间“TripleDESCryptoServiceProvider”
错误 3:当前上下文中不存在“CipherMode”
错误4:当前上下文中不存在“Getkey”
错误 5:当前上下文中不存在“PaddingMode”错误 6:错误 8 找不到类型或命名空间名称“ICryptoTransform”(您是否缺少 using 指令或 essemble 引用?)
public static string Encrypt(string data)
{
TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
DES.Mode = CipherMode.ECB;
DES.Key = GetKey("a1!B78s!5(");
DES.Padding = PaddingMode.PKCS7;
ICryptoTransform DESEncrypt = DES.CreateEncryptor();
Byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(data);
return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
}
public static string Decrypt(string data)
{
TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
DES.Mode = CipherMode.ECB;
DES.Key = GetKey("a1!B78s!5(");
DES.Padding = PaddingMode.PKCS7;
ICryptoTransform DESEncrypt = DES.CreateDecryptor();
Byte[] Buffer = Convert.FromBase64String(data.Replace(" ","+"));
return Encoding.UTF8.GetString(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
}