1

Я работаю над проектом, и следующее, что я хочу узнать, - это добавить важные данные и зашифровать/дешифровать его.Шифрование/дешифрование 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(); 
} 
+1

Можете ли вы добавить код, как вы получаете/сохраняете данные? Это помогло бы раскрыть полезный пост, который учитывает вашу точную ситуацию C#. – Thomas

+0

Трудно обойтись без отправки его в базу данных, если это то, что вы имеете в виду? –

+0

я лучше напишу это; wink: Я сделал это раньше, поэтому не буду долго ждать – Crezzer7

ответ

0

я взял другой подход, поскольку это становится сложным для кодирования и декодирования все время и было бы замедлил систему. Вместо этого я пошел на JavaScript подхода на переднем конце, и с использованием CryptoJS

https://code.google.com/p/crypto-js/

мне удалось зашифровать свои данные, используя этот фрагмент кода ниже, взятый из приведенной выше ссылке:

DES, Triple DES DES является ранее доминирующим алгоритмом шифрования и был опубликован как официальный федеральный стандарт обработки информации (FIPS). DES теперь считается небезопасным из-за небольшого размера ключа.

default.html код

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/tripledes.js"></script> 

код экрана

var encrypted = CryptoJS.DES.encrypt("Message", "Secret Passphrase"); 
var decrypted = CryptoJS.DES.decrypt(encrypted, "Secret Passphrase"); 

Triple DES применяется по алгоритму DES три раза в каждом блоке, чтобы увеличить размер ключа. Считается, что этот алгоритм безопасен в этой форме.

по умолчанию.HTM файл

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/tripledes.js"></script> 

экран создан код

var encrypted = CryptoJS.TripleDES.encrypt("Message", "Secret Passphrase"); 

var decrypted = CryptoJS.TripleDES.decrypt(encrypted, "Secret Passphrase"); 

мне удалось сохранить данные в зашифрованном виде, а затем на представлении, редактировать и просматривать экраны, расшифровать его либо на базовые права пользователя, или это можно сделать для всех данных в приложении. поэтому код безопасен (как может быть) в базе данных и без ключа шифрования («Секретная парольная фраза») в приведенном выше примере, он не может быть дешифрован