開始。
まず、李大偉の友達の写真を見てみましょう。
チケットに露出している個人情報は次のとおりです:
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 や他のソーシャルアプリで公開しているので、簡単に見つけることができます。