Я использую шифрование SQL для шифрования моих данных.Я получаю обычный текст от пользователя, шифрую его с помощью шифрования SQL и вставляю его в базу данных SQL в столбец varbinary.Однако проблема, с которой я сталкиваюсь, заключается в том, что мои данные не сохраняются полностью.если я введу 5000, зашифрую его и сохраню в БД, при расшифровке он возвращает только 5, т.е. первый символ.Я смотрю на это в течение 3 дней, но до сих пор не могу решить.Ниже приведен код для шифрования ввода пользователя: `
public static readonly String queryOpen = "OPEN SYMMETRIC KEY SymmetricKey1 DECRYPTION BY CERTIFICATE Certificate1; "; //unmodifiable because its readonly
public static readonly String queryClose = ";CLOSE SYMMETRIC KEY SymmetricKey1;"; //unmodifiable because its readonly
public static Byte[] EncryptInput(string input)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["test"].ConnectionString);
con.Open();
string query = queryOpen + "DECLARE @output varbinary(MAX);SET @output = EncryptByKey(Key_GUID('SymmetricKey1'),@input)" + queryClose + "select @output";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@input",input);
Byte[] output = cmd.ExecuteScalar() as Byte[];
return output;
}
Приведенный выше код принимает ввод от пользователя и шифрует его с использованием шифрования SQL и возвращает в виде байта.Ниже приведен код для вставки вышеуказанных возвращенных данных, т.е. вывода в базу данных SQL
public static readonly String queryOpen = "OPEN SYMMETRIC KEY SymmetricKey1
DECRYPTION BY CERTIFICATE Certificate1; "; //unmodifiable because its readonly
public static readonly String queryClose = ";CLOSE SYMMETRIC KEY SymmetricKey1;"; //unmodifiable because its readonly
string insertQuery = queryOpen + "insert into fee(feePaid) values (@feePaid)" + Globals.queryClose;
SqlCommand cmd = new SqlCommand(insertQuery, con);
cmd.Parameters.Add("feePaid", SqlDbType.VarBinary, int.MaxValue).Value = Globals.EncryptInput(TextBox1.Text); // The EncryptInput Method is called here
cmd.ExecuteNonQuery();
Может кто-нибудь помочь и посоветовать?Почему я получаю только первый символ при расшифровке, например, я получаю 5, если пользовательский ввод 5000.