全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5584
推到 Plurk!
推到 Facebook!

利用delphi寫出身分證產器...

答題得分者是:arsene
cyc19842
一般會員


發表:1
回覆:0
積分:0
註冊:2006-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-07-06 16:30:04 IP:220.140.xxx.xxx 訂閱

身分證字號規則:
字母(ABCDEFGHJKLMNPQRSTUVXYWZIO),對應一組數(10~35)
令其十位數為X1,個位數為X2;( 如A:X1=1 , X2=0 );D表示2~9數字
Y = X1 9*X2 8*D1 7*D2 6*D3 5*D4 4*D5 3*D6 2*D7 1*D8 D9
如Y能被10整除,則表示該身分證號碼為正確,否則為錯誤。
#身分證字號由十碼組成,
第一碼是英文,戶籍地,共分26區,
依照ABCOEFGHJKLMNPQRSTUVWXYZIO
代號分別為10~35
也就是說A=10,B=11
I跟O都被跳過跑到最後面去了,
H=17,但是J=18
I是34 O是35
這兩個是特例請特別注意。
接著第二碼是性別碼,
1=male; 2=female
接著三到九碼是流水號,
而第十碼則是確認碼,
也就是說前九碼完全相同的情況之下,第十碼只有一個可能!

已經寫出身分證的驗證程式了,可是要寫出產生器..卻卡住了><
以上是身分證的驗證規則,那要怎麼利用delphi寫出一個身份證的產生器呢?
請delphi高手回答哩~"~

附加檔案:身份證辨識.rar
arsene
一般會員


發表:3
回覆:1
積分:5
註冊:2002-10-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-07-06 17:29:06 IP:61.222.xxx.xxx 未訂閱

可以思考一下以下的做法

(1) 先亂數取出一個英文字母對應的數值
宣告一個陣列塞英文字母對應的數值,再亂數取出其中一個

(2) 再亂數產生一組8碼數字,介於 1~2999999 之間

(3)將(1)(2)得到的數字組合起來
此時得到的值應該為長度為10的數字,
例如: A12345678
1012345678 (x1x2d1d2d3d4d5d6d7d8)

(4)利用公式算出檢查碼應為多少
Y = X1 9*X2 8*D1 7*D2 6*D3 5*D4 4*D5 3*D6 2*D7 1*D8
Y = 1 (0x9) (1x8) (2x7) (3x6) (4x5) (5x4) (6x3) (7x2) (8x1)
Y = 111
Y D9 必須為 10 整除..
所以 D9 = 9
依此類推若算出 Y=110 則D9=0

(5) 將(1)(2)及(4)算出的資料組合的起來就是一個合法的身份證字號囉

系統時間:2024-04-19 16:44:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!