使用参数加密C#SQL Server无法正确保存



我试图将加密数据插入SQL表中。我正在尝试保存两个随机数。这是我生成随机数的代码:

        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);

然后我将其插入表中。第一组代码有效,但我无法使用它,因为它与我的随机数不起作用。但是,它确实确认我大部分是正确的:

       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();

这是我希望使用的代码,但我似乎无法使其工作:

        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();

我没有遇到任何错误,但是当我查看未加密的数据时,我只会得到一个数字编号。如果我将参数进行硬编码,则它也不起作用。它仅在实际数字在sqlcommand中。

任何帮助或建议将不胜感激!

这是我最终使用的代码:

    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()+@"), EncryptByKey(Key_GUID('KeyCodesKey'), "+key2.ToString()+@"), CURRENT_TIMESTAMP)", cx);
    cx.Open(); 
    int success = cmd.ExecuteNonQuery();
    cx.Close()

由于这是一个Windows表单应用程序,并且没有可能出现注射问题的可能性,所以这是我可以提出的最佳解决方案。

相关内容

最新更新