反正工作就是如此,碰到了就把它解決。只是我真的對專案公司這個S.T.A.F.F.想太多了。

事情總有源起:

話說某一天,被老闆assign一個新的工作。但這工作不是新的,已經有前手做過。我只是要來維護跟加功能。

對同事的評批不適合在這邊打嘴炮。反正就是前手搞的不清不楚,後手就接的要死要活。

因為我們是在上游,所以很多事不用自已動手寫,交給「廠商」就好了。只是角色扮演上應該當個盡職的SA..

了解整個子功能的來龍去脈是基本的要求..可惜~世界就是這麼不公平...OK~嘴炮打完了。談點正事。

因為這個功能是需要跟其他公司進行資料交換,並驗證內容是否為我們系統發出去,若確認是我們系統送出,

才會執行系統應該做的事。但~~~~~~~~~~重點有看出來嗎??「驗證內容是否為我們系統發出去」

阿是要怎麼驗證????流程隨便人畫~談流程太無趣。重點是應該要有一個「認證碼」的東西。我們叫它Token。

在我想像中Token應該是一個需要利用演算法,把一些Input的資訊源做一些組合。然後加密Output出來。

然後對方系統依據我們提出的規格解開後,確認內容是否為我們系統發出。但~~~~~~~~事情真的不是我這種笨蛋想的這麼難........

我們可愛的廠商用了一個東西產生token..整串程式碼...不超過10行吧...嗐~~我真的別想太多~事情能解決就好。

全域唯一識別元[GUID]。詳細資料請參考MSDN

http://msdn.microsoft.com/zh-tw/library/cey1zx63(v=VS.80).aspx

 

用這個東西有什麼錯?

GUID(全局統一識別字)是指在一台機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。通常平臺會提供生成GUID的API。生成演算法很有意思,用到了乙太網卡位址、納秒級時間、晶片ID碼和許多可能的數位。GUID的唯一缺陷在於生成的結果串會比較大。

  1.  一個GUID為一個128位元的整數(16位元組),在使用唯一識別字的情況下,你可以在所有電腦和網路之間使用這一整數。
  2. GUID 的格式為“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每個 x 是 0-9 或 a-f 範圍內的一個十六進位的數字。例如:337c7f2b-7a34-4f50-9141-bab9e6478cc8 即為有效的 GUID 值。
  3. 世界上(Koffer注:應該是地球上)的任何兩台電腦都不會生成重複的 GUID 值。GUID 主要用於在擁有多個節點、多台電腦的網路或系統中,分配必須具有唯一性的識別字。
  4. 在 Windows 平臺上,GUID 應用非常廣泛:註冊表、類及介面標識、資料庫、甚至自動生成的機器名、目錄名等。

以上是真的~那表示事情很簡單就被解決了。只是如果既然都用了GUID,那又何必在驗證過程式,加其他的參數來判斷。

只要驗證 產出的guid是否相同就好。但guid真的不會重覆嗎?聽文件在放屁...............

充其量guid只能當做某一個驗證值,但它絕對不是唯一值...

GUID絕對是好物,只是使用上還是要小心,在我心中那傳統的怪獸在撕吼著說~GUID絕對不應該拿來當系統驗證碼。

But..廠商咩~事情有解決,錢有收到就好....

arrow
arrow
    全站熱搜

    alanting 發表在 痞客邦 留言(0) 人氣()