Что не так с моим кодом? С#
Это мой код в program.cs:
static void Main(string[] arg) { Boolean bCreatedNew; Mutex m = new Mutex(false, "schoolProject", out bCreatedNew); m.WaitOne(); GC.Collect(); if (!bCreatedNew) return; m.ReleaseMutex(); System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Highest; Byte[] myKey = AES.generateKey(); string result = System.Text.Encoding.UTF8.GetString(myKey); RSACryptoServiceProvider RSAObj = new RSACryptoServiceProvider(); File.WriteAllText("rsa.txt", RSAObj.ToXmlString(true)); File.WriteAllBytes("aes.txt", RSAObj.Encrypt(myKey, false)); encryptAll(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), myKey); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form1 form1 = new Form1(); form1.RSAObj(result); Application.Run(form1); } } }
А это мой код в форме 1:
public void RSAObj(string value) { textBox1.Text = value; }
Как вы можете видеть, эта программа создает два текстовых документа, один с RSA, а другой с ключом AES, который шифруется RSA, и отправляет ключ AES в текстовое поле в форме 1. Проблема в том, что я получаю не ключ AES в текстовом поле, а случайный мусор, например: "6Ea � � � x�) XL�F". Почему? Как вы можете видеть я преобразовал байты в строку чтобы отправить ключ AES в текстовое поле Form 1:
Byte[] myKey = AES.generateKey(); string result = System.Text.Encoding.UTF8.GetString(myKey);Я попытался заставить программу отправить ключ RSA в текстовое поле в форме 1, и это сработало, изменив:
form1.RSAObj(result);к
form1.RSAObj(RSAObj.ToXmlString(true));Но как я могу заставить его отправить ключ AES?
Что я уже пробовал:
Dave Kreskowiak
Я почти боюсь спрашивать, но что это за мьютекс и вызов GC?Собирать?
Серьезно, похоже, что вы копируете и вставляете код из интернета, не имея ни малейшего представления о том, что он делает и как работает.