2013-01-15 120 views
0

我可以發佈到SQL論壇,但我寧願尋找一個想法或最佳做法,這就是爲什麼我選擇了這個論壇。 我在SQL中有一個名爲Payroll Number的整數列,它對員工是唯一的。我們將通過SQL視圖詢問來自該系統的員工信息並將其放入另一個系統,但我們不希望工資單號碼出現在系統中。因此,我們需要在SQL上散列這些工資覈算編號,以便視圖能夠散列用戶友好的數字。混淆整數列

我花了很多時間閱讀SQL中的加密技術,但他們使用複雜的算法來散列數據並生成二進制文件。但我所追求的並不是混淆數字而是散列。

例如,工資號是6個字符(145674),我希望能夠從這個數字中產生9-10個字符的長整數,並在其他系統上使用它。

我看過XOR'ing,但我需要更堅固和優雅的東西。

你們如何做這些事情?你寫你的簡單算法混淆你的整數?我需要在SQL層面上做到這一點,你有什麼建議?

感謝您的幫助

問候

+1

我猜你需要能夠顛倒「散列」,否則爲什麼顯示數字。既然是這樣的話,你不是對數字進行哈希處理,而是對它進行加密。細微差別。加密可以通過平臺改變。你在使用哪一個? – Hogan

+0

我不認爲我需要扭轉它,但我將使用的算法需要生成相同的數字,無論平臺,因爲該號碼將用於其他系統 – AnarchistGeek

回答

2

不難哈希值,但它是很難散列值和一定的獨特性,有它是一個數字。但是,我確實有一個跨數據庫解決方案。

創建一個新表 - 有兩列,id(自動從隨機起點生成)和工資單ID。

每次您需要使用外部用戶將它們插入到此表中時。這會給你一個你可以使用的本地唯一ID(內部和外部),但它不是薪資ID。實際上,如果你已經有一個內部id(例如用戶表中的用戶id),那就使用它。如果從未解碼,則散列此值沒有好處。但是,您可以使用id的autogen作爲隨機唯一散列 - 它具有您需要的所有屬性。

+0

這個問題是我們沒有訪問該數據庫服務器,它是人力資源數據庫,只有某些人需要訪問數據庫。我們提供的意見,就是它..數據庫的任何變化都需要應用程序供應商參與,這需要很長時間...您認爲XOR ing是一個壞主意嗎? – AnarchistGeek

+1

這不是XOR,rot13或base64不好,只是它沒有提供安全性。對散列/加密稍有了解的任何人都會馬上看到它。最好做一些簡單的事情,比如乘以10 + 1然後反轉數字。 (請注意,由於引發0問題,您已將1放在最後,這不是很好的安全性,但它與其他任何「簡單」安全性一樣好,至少它是最簡單的。 – Hogan

+0

感謝您的解釋.. – AnarchistGeek