2017-09-13 2 views
0

Ich versuche, verschlüsselte Daten in eine SQL-Tabelle einzufügen. Ich versuche zwei Zufallszahlen zu speichern. Hier ist mein Code zum Generieren der Zufallszahlen:Verschlüsselung mit Parametern C# SQL Server nicht ordnungsgemäß speichern

 Random randomNumber = new Random(); 
     int key1 = randomNumber.Next(10000000, 99999999); 
     Thread.Sleep(1000); 
     Random randomNumber2 = new Random(DateTime.Now.Second); 
     int key2 = randomNumber2.Next(10000000, 99999999); 

Dann füge ich es in die Tabelle ein. Dieser erste Code-Satz funktioniert, aber ich kann ihn nicht verwenden, weil er nicht mit meinen Zufallszahlen funktioniert. Es ist jedoch zu bestätigen, dass ich es habe meist recht:

 SqlCommand cmd = new SqlCommand(@"OPEN SYMMETRIC KEY KeyCodesKey DECRYPTION BY CERTIFICATE KeyCodes; 
     insert into keyfile(encrypted_key1, encrypted_key2, startingkeydate) values (EncryptByKey(Key_GUID('KeyCodesKey'), '19630515'), EncryptByKey(Key_GUID('KeyCodesKey'), '19520921'), CURRENT_TIMESTAMP)", cx); 
     int success = cmd.ExecuteNonQuery(); 

Dies ist der Code, den ich würde verwenden möchten, aber ich kann es nicht scheinen, um zu arbeiten:

 SqlCommand cmd = new SqlCommand(@"OPEN SYMMETRIC KEY KeyCodesKey DECRYPTION BY CERTIFICATE KeyCodes; 
     insert into keyfile(encrypted_key1, encrypted_key2, startingkeydate) values (EncryptByKey(Key_GUID('KeyCodesKey'), @key1), EncryptByKey(Key_GUID('KeyCodesKey'), @key2), CURRENT_TIMESTAMP)", cx); 
     cx.Open(); 
     cmd.Parameters.AddWithValue("@key1",key1.ToString()); 
     cmd.Parameters.AddWithValue("@key2", key2.ToString()); 
     int success = cmd.ExecuteNonQuery(); 

ich nicht immer irgendwelche Fehler, aber wenn ich auf die unverschlüsselten Daten schaue, erhalte ich nur eine einzelne Ziffer. Wenn ich die Parameter fest programmiere, funktioniert es auch nicht. Es funktioniert nur, wenn die tatsächlichen Zahlen im SqlCommand sind.

Jede Hilfe oder Beratung wäre sehr willkommen!

Antwort

0

Dies ist der Code, den ich am Ende mit:

SqlCommand cmd = new SqlCommand(@"OPEN SYMMETRIC KEY KeyCodesKey DECRYPTION BY CERTIFICATE KeyCodes; 
    insert into keyfile(encrypted_key1, encrypted_key2, startingkeydate) values (EncryptByKey(Key_GUID('KeyCodesKey'),"+key1.ToString()[email protected]"), EncryptByKey(Key_GUID('KeyCodesKey'), "+key2.ToString()[email protected]"), CURRENT_TIMESTAMP)", cx); 
    cx.Open(); 
    int success = cmd.ExecuteNonQuery(); 
    cx.Close() 

Da dies ein Windows Forms-Anwendung, und es gibt keine Möglichkeit der Injektion Probleme, ist dies die beste Lösung, die ich tun konnte, das funktioniert.

Verwandte Themen