2013-01-15 3 views
0

SQL 포럼에 게시 할 수는 있지만 오히려이 포럼을 선택한 이유 또는 모범 사례를 찾습니다. SQL에 Payroll Number라는 정수 열이 있으며 직원에게 고유합니다. 우리는 SQL 조회를 통해이 시스템의 직원 정보를 조사하고 다른 시스템에 투입 할 것입니다. 그러나이 시스템에있는 것처럼 급여 번호가 나타나지 않도록해야합니다. 따라서 뷰가 해시 된 사용자 친화적 인 숫자를 제공 할 수 있도록 SQL에서 이러한 급여 번호를 해시해야합니다.정수 열 난독 화

SQL에서 암호화 기술을 읽는 데 많은 시간을 보냈지 만 복잡한 알고리즘을 사용하여 데이터를 해시하고 바이너리를 생성합니다. 하지만 내가하는 일은 덜 복잡하고 해시가 아니라 숫자를 모호하게 만드는 것입니다.

예를 들어, 급여 번호는 6 자 (145674)이며이 번호에서 9-10 자 긴 정수를 생성하여 다른 시스템에서 사용할 수 있기를 원합니다.

XOR'ing을 보았지만 좀 더 견고하고 우아한 것이 필요합니다.

어떻게 이런 짓을하나요? 간단한 알고리즘으로 정수를 모호하게 만드십니까? SQL LEve에서이 작업을 수행해야합니다. 무엇을 제안합니까? 그것은 어려운 일이 아니다 당신의 도움

감사

+1

"해시"를 뒤집을 수 있어야한다고 생각합니다. 그렇지 않으면 숫자가 전혀 표시되지 않습니다. 이 경우부터 번호를 해시하지 않고 암호화하는 것입니다. 미묘한 차이. 암호화는 플랫폼에 따라 변경 될 수 있습니다. 어느 쪽을 사용하고 있습니까? – Hogan

+0

나는 그것을 뒤집을 필요가 없다고 생각하지만, 사용하는 알고리즘은 플랫폼에 관계없이 같은 번호를 생성해야한다. 다른 시스템에서 그 번호가 사용되기 때문이다. – AnarchistGeek

답변

2

에 대한

덕분에 값을 해시하지만 값을 해시 및 고유성 확인하고 숫자 여야가 어렵다. 그러나, 나는 크로스 데이터베이스 솔루션을 가지고있다.

두 개의 열, id (임의 시작 지점에서 자동 생성 됨) 및 급여 ID가있는 새 표를 만듭니다.

매번 사용자를 외부 적으로이 테이블에 삽입해야합니다. 이렇게하면 내부적으로나 외부 적으로 사용할 수있는 로컬 고유 ID를 얻을 수 있지만 급여 ID가 ​​아닙니다.

사실, 이미 내부 ID (예 : 사용자 테이블의 사용자 ID)가있는 경우이를 사용하십시오. 해독되지 않으면이 값을 해싱 ​​할 때 이점이 없습니다. 그러나 id의 자동 생성기를 임의의 고유 한 해시로 사용할 수 있습니다. 필요한 모든 속성을 가지고 있습니다.

+0

이 문제는 우리가 그 데이터베이스 서버에 액세스하지 못한다는 것이다. 그것은 HR 데이터베이스이며 특정 사용자 만 데이터베이스에 액세스해야합니다. 우리는 뷰를 제공합니다. 즉, 데이터베이스에 대한 변경은 애플리케이션 벤더가 참여하도록 요구합니다 ... XOR ing은 나쁜 생각이라고 생각합니까? – AnarchistGeek

+1

XOR, rot13 또는 base64가 나쁜 것은 아닙니다 ... 단지 보안을 제공하지 않습니다. 해싱/암호화에 대한 약간의 지식이있는 사람은 즉시이를 보게됩니다. 10 + 1을 곱한 다음 숫자를 반대로하는 것과 같이 쉽고 명확한 작업을 수행하는 것이 좋습니다. (참고로 0을 맨 앞에 놓았으므로 1을 넣었습니다. 이것은 좋은 보안은 아니지만 다른 "쉬운"것만 큼 좋으며 적어도 가장 간단합니다. – Hogan

+0

설명 해 주셔서 감사합니다 .. – AnarchistGeek