SQL Server에서 대칭 키를 통해 데이터를 암호화하려고합니다. 사용자가 웹 양식을 통해 데이터를 제출하면 SQL Server에 저장 한 대칭 키를 사용하여 데이터를 암호화하고 싶습니다. 나는 이것을하는 방법을 찾으려고 노력하고있다. 내 Web.Config 파일에서 키를 열려고하면 그러나, 나는 오류가 발생 -SQL 대칭 키 및 C#에서 열어
USE myDb
GO
OPEN SYMMETRIC KEY myKey
DECRYPTION BY CERTIFICATE myCert
GO
INSERT INTO [myDb].[dbo].[passData]
([userid]
,[passName]
,[passLogin1]
,[passLogin2]
,[passPass1]
,[passPass2]
,[passWebsite]
,[passNote])
VALUES
('1'
,'test_2'
,ENCRYPTBYKEY(KEY_GUID('myKey'),'somedata1')
,NULL
,ENCRYPTBYKEY(KEY_GUID('myKey'),'somedata2')
,NULL
,NULL
,NULL)
GO
이 위대한 작품 : 현재, 나는 다음 실행합니다.
C# 코드 :
<add key="OpenKey" value="OPEN SYMMETRIC KEY myKey DECRYPTION BY CERTIFICATE myCert"/>
<add key="DepositPasswordData" value="INSERT INTO Passwords.dbo.userPassData{0} userid, passName, passLogin1, passLogin2, passPass1, passPass2, passWebsite, passNote) VALUES ('{0}', '{1}', 'ENCRYPTBYKEY(KEY_GUID('myKey '),'{2}')', 'ENCRYPTBYKEY(KEY_GUID('myKey'),'{3}')', 'ENCRYPTBYKEY(KEY_GUID('myKey'),'{4}')', 'ENCRYPTBYKEY(KEY_GUID('myKey'),'{5}')', '{6}', '{7}')" />
오류은 try/catch 문에서
private void openKey(Dictionary<String, String> inputStrings)
{
try
{
SqlCommand seeqlCmd = new SqlCommand();
String sqlInfo = ConfigurationManager.AppSettings.Get("OpenKey");
seeqlCmd.CommandText = sqlInfo;
seeqlCmd.CommandType = CommandType.Text;
seeqlCmd.Connection = __SQLConn;
seeqlCmd.ExecuteNonQuery();
submitDataToDb(inputStrings);
__SQLConn.Close();
}
catch (SqlException err)
{
// show error commands here
}
}
private void submitDataToDb(Dictionary<String, String> sqlString)
{
try
{
SqlCommand sqlCmd = new SqlCommand();
String confSet = ConfigurationManager.AppSettings.Get("DepositPasswordData");
sqlCmd.CommandText = String.Format(confSet, sqlString["userID"], sqlString["passName"], sqlString["loginOne"], sqlString["loginTwo"], sqlString["passOne"], sqlString["passTwo"], sqlString["webSite"], sqlString["passNote"]);
sqlCmd.CommandType = CommandType.Text;
sqlCmd.Connection = __SQLConn;
sqlCmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
// show error commands here
}
}
Web.Config 파일 :
Error Number: 102, Error Message: Incorrect syntax near 'myKey'. in: -2146232060 and System.Data.SqlClient.SqlErrorCollection
질문/문제 :
- 왜 오류가 발생합니까?
- 키에 액세스하거나 데이터를 암호화하는 다른 방법이 있습니까? 또한
: 자연
Error Number: 15151, Error Message: Cannot find the symmetric key 'myKeya', because it does not exist or you do not have permission. in: -2146232060 and System.Data.SqlClient.SqlErrorCollection
내가 사용하고 있습니다 :는 나는이 오류가 발생했습니다 "myKeya"을 "의 mykey"또는 그런 일로부터보다 키 이름을 변경 시도 'myKey'와는 다른 단어이지만 내가 사용하고있는 단어가 어떤 종류의 키워드인지 확인하려면 google, bing 및 msdn에 대한 검색 결과에 나타나지 않습니다 ... 그래서 나는 안전하다고 생각합니다. 그곳에. 또한 이것은 db가 실제로 요청을 수신한다는 점에서 단서를 제공하지만 일부 다른 fasion에서는 키를 원합니다. 흠 ...
submitDataToDb에 대한 호출이 아니라 오류가 열려 있는지 확인 하시겠습니까? – SqlACID
흥미로운 점 ... 디버거를 실행할 때 오류가 submitDataToDb()의 sqlCmd.ExecuteNonQuery();에서 발생하지만 "OpenKey"의 값을 가리키며 잘못된 구문이 있다고합니다. "myKey"에. –
사실 친애하는 각하, 나는 네가 머리에 못을 박 았을지도 모른다고 생각한다. .. 그리고 나에게 가치있는 교훈을 가르쳤다.그것의 다른 기능입니다. 감사합니다. 답변을 게시하여 제가 동의하고 신용을 줄 수 있도록해야합니다. :) –