2012-05-31 34 views
1

我需要創建一個網站,允許客戶在線查看他們的帳戶狀態信息。爲了避免創建客戶網站帳戶的麻煩,我希望他們只需登錄他們的帳號和訪問代碼即可。我希望通過帳號生成訪問代碼,我將在他們的郵寄語句中提供代碼。生成一個簡單的訪問代碼來查看帳戶信息

從8位數字帳號生成此訪問代碼的好公式/函數/方法是什麼?結果可能是數字或alpha,但我不希望它超過10個字符。我想保持數學非常簡單,以便在打印語句時通過水晶報表公式生成代碼。我不尋找防彈安全,因爲這不是敏感信息。我只是想防止某人隨機鍵入帳號。

+0

你可以做任何形式從Crystal報表哈希值(SHA-1)的,或產生隨機數?或者你只是想找點直截了當的數學嗎?你可以在你身邊儲存一些東西(想一想鹽),以便在他們登錄時授權他們嗎? –

+0

不幸的是,我正在連接來自傳統計費系統的數據轉儲,並且試圖避免存儲除了我所獲得的數據文件以外的任何其他數據。這就是爲什麼我想要訪問代碼基於帳號。這也是爲什麼我試圖在Crystal的運行時生成它的原因。看起來Crystal不支持哈希函數,所以簡單的數學可能是最好的。 – westtx28

回答

0

我會做的是將帳號分成兩部分(使用模塊化算術),然後在這兩部分上執行一些小算術以獲得授權碼。

例如:

I'm assuming account number is atleast 10000, if they start at 00000001, then you will have to add a step to multiply it by 10,000 (which will result in larger auth codes for the bigger account numbers) or reduce the modulus size

Let A = account number

A mod 10,000 = X

(A - X)/10,000 = Y

AuthCode = (X + 51) * (Y + 89)

因此,如果帳戶號碼爲18654848:

18654848 % 10000 = 4848

(18654848 - 4848)/10000 = 1865

(4848 + 51) * (1865 + 89) = 4899 * 1954

= 9572646

當用戶嘗試登錄,看看AUTH然後執行相同的數學代碼和該號碼匹配。

這將使身份驗證碼爲103538的範圍內 - 101384400

+0

不錯。這會很好。易於在水晶配方。感謝您花時間幫助我。 – westtx28

相關問題