Я работаю над проектом, и следующее, что я хочу узнать, - это добавить важные данные и зашифровать/дешифровать его.Шифрование/дешифрование SQL Server с помощью C#
Я Сделали основы на это уже на код ниже (с помощью SQL Server):
--STEP 1, CREATE DATABASE MASTER KEY
USE DatabaseTest
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD='securepassword'
GO
--STEP 2, CREATE A CERTIFICATE
CREATE CERTIFICATE creditcardcert WITH SUBJECT='creditcardcert'
GO
--STEP 3, CREATE SYMMETRIC KEY
CREATE SYMMETRIC KEY CCreditCard_KEY WITH ALGORITHM = triple_des ENCRYPTION BY CERTIFICATE creditcardcert
GO
--STEP 4, CREATE CCEncrypted ENCRYPTED COLUMN
ALTER TABLE Person ADD CCEncrypted varbinary(128)
GO
--STEP 5, ENCRYPT DATA
OPEN SYMMETRIC KEY CCreditCard_KEY
DECRYPTION BY CERTIFICATE creditcardcert
UPDATE Person SET CCEncrypted = ENCRYPTBYKEY(KEY_GUID('CCreditCard_KEY'), CreditCardNumber)
CLOSE SYMMETRIC KEY CCreditCard_KEY
GO
Теперь я знаю, что я могу использовать для шифрования данных, и у меня есть запрос, чтобы расшифровать его также с SQL Server, однако мне нужно сделать это на уровне C#, когда данные будут добавлены.
Например, у меня есть форма C# Windows, которая может принимать имя, фамилию, CredCardNumber). Эти данные при добавлении сохраняются в таблице SQL Server, Теперь мой вопрос заключается в том, как я могу зашифровать эти данные, поскольку он сохраняется, и если я хочу его просмотреть, могу ли я его расшифровать одним нажатием кнопки (на данный момент)?
Спасибо за любую помощь
--in ADDITION им студент делает мой последний проект года, так как с помощью услуг, что приведет к снижению моим меток для программирования значительно (хотя хорошо для исследовательской части) По существу я хочу иметь возможность хранить определенные данные в таблице SQL Server в зашифрованном виде, поэтому, если я не напишу заявление о расшифровке, я не могу увидеть его в SQL Server. Но поскольку приложение требует пароль в любом случае и будет иметь уровни разрешений, тогда есть альтернативное решение, поэтому я все еще могу видеть/добавлять/редактировать эти данные, не зашифрованные в моем приложении? если вы меня поймете?
и пример добавления данных в C#:
System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection("SomeConnectionString")
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandText = "Insert Into Person(Firstname, Surname, CCNumber) Values (@Firstname, @Surname, @CCNumber)";
cmd.Connection = cn;
cmd.Parameters.AddWithValue("@Firstname", txtFirstname.Text);
cmd.Parameters.AddWithValue("@Surname", txtSurname.Text);
cmd.Parameters.AddWithValue("@CCNumber", txtCCNumber.Text); //ENCRYPT ME
try
{
cn.Open();
cmd.ExecuteNonQuery();
lblStatus.Text = "Item Inserted";
}
catch(Exception ex)
{
lblStatus.Text = ex.ToString();
}
finally
{
cn.Close();
}
Можете ли вы добавить код, как вы получаете/сохраняете данные? Это помогло бы раскрыть полезный пост, который учитывает вашу точную ситуацию C#. – Thomas
Трудно обойтись без отправки его в базу данных, если это то, что вы имеете в виду? –
я лучше напишу это; wink: Я сделал это раньше, поэтому не буду долго ждать – Crezzer7