開始。
まず、李大偉の友達の写真を見てみましょう。
チケットに表示されている個人情報は次のとおりです:
3302211993****4914 李大偉
月日の 4 桁が不足しています。
それなら、合計 365 通りの可能性があります。
科学普及の時間:#
李大偉の身分証情報の最初の 6 桁「330221」に基づいて
簡単にわかります:
浙江省寧波人、1993 年生まれ
それでは、まずは Python を使って 1993 年のすべての日付を生成しましょう。
import time
#生まれた年のすべての日付を生成する
def dateRange(year):
fmt = '%Y-%m-%d'
bgn = int(time.mktime(time.strptime(year+'-01-01',fmt)))
end = int(time.mktime(time.strptime(year+'-12-31',fmt)))
list_date = [time.strftime(fmt,time.localtime(i)) for i in range(bgn,end+1,3600*24)]
return [i.replace('-','') for i in list_date]
data_time = dateRange('1993')
日付のリストが正常に生成されました。
そして、先ほどのチェックコードの計算規則を使って、どの日付が一致するかを逆に確認しましょう!計算規則を自分で書くのは面倒ですよね?
みなさんに紹介するのは、素晴らしいライブラリ:id-validator です。
インストール:pip install id-validator
これを使って、身分証番号の妥当性を検証したり、身分証番号の情報を取得したり、検証可能な偽のデータを生成したり、身分証番号をアップグレードすることができます。
それでは、先ほど生成した身分証番号を順番に検証するために id-validator を使用しましょう。完全なコードは以下の通りです:
from id_validator import validator
import time
#生まれた年のすべての日付を生成する
def dateRange(year):
fmt = '%Y-%m-%d'
bgn = int(time.mktime(time.strptime(year+'-01-01', fmt)))
end = int(time.mktime(time.strptime(year+'-12-31', fmt)))
list_date = [time.strftime(fmt, time.localtime(i))for i in range(bgn, end+1, 3600*24)]
return [i.replace('-', '') for i in list_date]
#すべての日付を反復処理し、検証に合格した身分証番号を出力する
def vali_dator(id1, id2, id3):
for i in dateRange(id2):
theid = id1 + i + id3
if validator.is_valid(theid):
print(theid)
vali_dator('330221','1993','4914')
実行結果:
33 の日付の中から李大偉の本当の誕生日を見つけるにはどうすればいいですか?
次に、身分証番号と名前が一致するかどうかで最終結果を絞り込む必要があります。以前の解決策は:12306 で検索し、12306 に連絡先を追加し、身分証番号と名前が一致する場合、検証が通過することが表示されます。通過しない場合は、身分証番号と名前が一致しないことを意味します。しかし、この方法はもう使えません。
それから、私は Alibaba Cloud の実名認証 API を見つけましたが、身分証の名前と身分証番号が一致するかどうかを確認するために使用します。ただし、企業ユーザーのみが使用できるため、個人では使用できませんので、試していません。
まとめ#
Python を使用して身分証番号を計算する具体的な手順は、おおよそこれです。もちろん、誕生月と日付は多くの人が QQ や他のソーシャルアプリで公開しているため、簡単に見つけることができます。