2013/01/16

Strong Password Generator Algorithm

以下用個人主密碼=password,網站識別碼=google,密碼長度=16為例說明密碼的產生流程。
    為了讓產生密碼的過程更簡易,我們使用以下工具輔助:
    密碼產生流程如下:
    1. 設定個人主密碼M
      M = password
    2. 對M取sha1,得到sM
      sM = 0x5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
    3. 將sM以")!@#$%^&*(ABCDEF"編碼,得到Mb
      (也就是在標準鍵盤上按著Shift將16進位編碼照著打一遍)
      Mb = %BAA^!E$C(B(#F#F)^*@@%)B^CF*##!B&EE^*FD*
    4. 對Mb取sha1,得到sMb
      sMb = 0xae9a64452aec3535a5d6114406417a31bb37ae7b
    5. 將sMb以")!@#$%^&*(ABCDEF"編碼,得到Mc
      Mc = AE(A^$$%@AEC#%#%A%D^!!$$)^$!&A#!BB#&AE&B
    6. 將Mc接上網站識別碼S,得到X
      X = AE(A^$$%@AEC#%#%A%D^!!$$)^$!&A#!BB#&AE&Bgoogle
    7. 對X取sha1,得到sX
      sX = 0xca82058e6197229178510908de8e6e7aa132a3f5
    8. 將sX以[A-Z][a-z][0-9][._]編碼,得到P
      (快速的作法是在最前補0x00後以Base64編碼,再將結果去掉第一個字母A)
      P = MqCBY5hlyKReFEJCN6ObnqhMqP1
      P = substr(
       base64(
      0x00ca82058e6197229178510908de8e6e7aa132a3f5), 1)
       = substr(AMqCBY5hlyKReFEJCN6ObnqhMqP1, 1)
       = 
      MqCBY5hlyKReFEJCN6ObnqhMqP1
    9. 從前方由P取出密碼長度的字元數,得到最終密碼
      密碼 = MqCBY5hlyKReFEJC

    沒有留言:

    張貼留言