Как использовать строку массива для расшифровки столбца базы данных?
Добро пожаловать,
У меня есть строковый массив, содержащий некоторые ключи, используемые для расшифровки данных столбцов в базе данных. но только первое значение в столбце расшифровывается правильно.
private void button8_Click(object sender, EventArgs e) { this.txtKey.Hide(); this.lblkey.Hide(); OracleConnection conn; using (conn = new OracleConnection(oradb)) { OracleCommand select = new OracleCommand("select EMPNO, ENAME,JOB from EMP", conn); conn.Open(); OracleDataReader reader = select.ExecuteReader(); Int64 v_empno = 0; String v_JOBvalue = ""; String Decryptjob = ""; Enigma enigma = new Enigma(); if (reader.HasRows) { foreach (var item in KeyList) { int i = 0; string[] the_array = new string[KeyList.Count]; while (reader.Read()) { v_empno = reader.GetInt32(0); v_JOBvalue = reader.GetString(2); the_array[i] = item.ToString(); Decryptjob = enigma.Decrypt(v_JOBvalue, the_array[i]); // MessageBox.Show(" : value of job :" + v_JOBvalue + "decrypted using the key " + decryptedListKey); ///////////////////////////////////////////////////////////////////////////////// OracleCommand update = new OracleCommand("update EMP set JOB =:JOB where EMPNO =:EMPNO", conn); OracleParameter JOB = new OracleParameter("JOB", Decryptjob); OracleParameter EMPNO = new OracleParameter("EMPNO", v_empno); update.Parameters.Add(JOB); update.Parameters.Add(EMPNO); update.ExecuteNonQuery(); i++; }} MessageBox.Show("User updated!"); OracleDataAdapter a = new OracleDataAdapter("select * from EMP", conn); DataTable t = new DataTable(); a.Fill(t); dataGridView1.DataSource = t; reader.Close(); } } } I assigned keylist on another button that encrypts values as shown private void buttonencrypt_Click(object sender, EventArgs e) { this.txtKey.Hide(); this.lblkey.Hide(); OracleConnection conn; using (conn = new OracleConnection(oradb)) { int index = 0; OracleCommand select = new OracleCommand("select empno,ENAME,job from emp", conn); conn.Open(); OracleDataReader reader = select.ExecuteReader(); Int64 v_EMPNO = 0; String v_JOBvalue = ""; String encryptjob = ""; if (reader.HasRows) { while (reader.Read()) { v_EMPNO = reader.GetInt32(0); v_JOBvalue = reader.GetString(2); REA rea = new REA(); Enigma enigma = new Enigma(); KeyG = enigma.GenerateKey(); ////////////////////////////////////////JOB///////////////////////////////////// for (index = 0; index < v_JOBvalue.Length; index++) {encryptjob = enigma.Encrypt(v_JOBvalue, KeyG);} KeyList.Add(KeyG); ////////////////////////////////////////////////////////////////////////////////// OracleCommand update = new OracleCommand("update EMP set JOB =:JOB where EMPNO =:EMPNO", conn); OracleParameter Job = new OracleParameter("JOB", encryptjob); OracleParameter empno = new OracleParameter("empno", v_EMPNO); update.Parameters.Add(Job); update.Parameters.Add(empno); update.ExecuteNonQuery(); } string s = String.Join(",", KeyList); string msg = ""; foreach (string val in KeyList) msg += val; MessageBox.Show(msg); MessageBox.Show("User updated!"); OracleDataAdapter a = new OracleDataAdapter("select * from emp", conn); DataTable t = new DataTable(); a.Fill(t); dataGridView1.DataSource = t; reader.Close();}}}
Что я уже пробовал:
У меня есть строковый массив, содержащий некоторые ключи, используемые для расшифровки данных столбцов в базе данных. но только первое значение в столбце расшифровывается правильно.
CHill60
Означает ли это, что другие не расшифрованы вообще или расшифрованы неправильно?