プログラム内の短いテキストボックスまたは文字列 (ファイルではない) を暗号化して、その内容を人間が読み取れないようにするか、安全な単純な暗号化で暗号化します (機密性の高いパスワードなど)。Visual Basic では、これを行うのに簡単な 5 ライナーがありましたが、C# にコピーすると C# では機能しません。適切なものが見つかりませんでした。膨大な量のコードが必要な非常に難しい例しかありません。ほとんどの場合、多くのエラーがスローされ、複雑なキー、キーペア、ハッシュ、utf エンコーディング、またはその両方を設定して機能させる必要がありますが、決してそうではありません。私にはそのすべての手がかりがなく、暗号化の両方の方法で機能する単純な関数が必要です。エラーなしで実際に動作し、ジョブを前後に実行する C# のようなものは見つかりませんでした。
または、以下のコード サンプルを機能させるにはどうすればよいでしょうか。これは最も有望なものです。C# の button1_click イベントでコピーすると、多くのエラーが発生します。
エラー 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));
}