"테이블에 책이 있습니다."라는 문장에서 "book"이라는 단어를 검색하려고한다고 가정합니다. 문장을 암호화 된 형식으로 저장해야합니다. 독립 실행 형 SQL Server에서는 SQL Server에 키가있는 대칭 키 암호화를 사용할 수 있으며 암호화 된 열 내의 구문 검색을 검색하고 일치하는 행만 반환 할 수 있습니다. 하지만 대칭 키를 지원하지 않는 SQL Azure를 사용하고 싶습니다. 어떻게해야합니까? 더 긴 암호화 된 varchar 문자열 내에서 구문을 찾으려면 어떤 해결 방법을 사용할 수 있습니까?SQL Azure의 암호화 된 열에서 검색 할 수있는 방법이 있습니까?
전체 문장을 검색하는 대신 C#의 응용 프로그램 수준에서 쉽게 암호/암호 해독을 수행 할 수 있습니다. C#에서 전체 문장을 암호화 할 수 있는데, "1234567890"을 반환하고 SQL Server에 암호화 된 문자열의 완벽한 일치를 요청할 수 있습니다. 그것은 열의 전체 가치를 찾는 데 효과적입니다. 문제는 전체 문자열 (단어 "book")의 일부만 검색해야한다는 것입니다. C#에서 "book"을 암호화하면 암호화 알고리즘이 "asdf"를 반환한다고 가정합니다. 전체 문장을 암호화하고 알고리즘이 "1234567890"을 반환하면 내 하위 문자열 "asdf"를 찾을 수 없습니다. SQL에서 "asdf"와 같은 문자열을 찾도록 요청하면 전체 암호화 된 문자열에서 해당 문자열을 찾을 수 없습니다. 여기서 암호화 된 "book"이 "3456"이되는 부분 암호화가 항상있는 암호화 알고리즘을 찾을 수 있습니다. "1234567890"이되는 전체 문장 내에서).
정말 SQL Azure를 사용하고 싶지만 암호화 된 더 큰 문자열 내에서 문자열 LIKE 일치를 검색 할 방법이 필요합니다. 도움이된다면 CLR 스토어드 프로 시저를 사용하는 데 열어도되지만 확실하지는 않습니다. 어떤 제안?
답장을 보내 주셔서 감사합니다. 문제는 내가 1,000,000 개의 레코드가 있고 그 중 4 개의 레코드에만 "book"이라는 단어가 포함되어 있으면 해독을 위해 백만 건의 레코드를 모두 가져올 수 없다는 것입니다. 나는 서버 끝에서 T-SQL로부터 정기적 인 빠른 레코드 필터링을 필요로한다. 들어오는 모든 단락의 모든 단어를 데이터베이스에 색인화하는 것을 정말 싫어한다는 점을 제외하면 색인 아이디어는 흥미 롭습니다. 텍스트 하나 단락이나 단락을 삽입하는 대신 앱과 데이터베이스에서 꽤 부담스러워 보입니다. – stackonfire