(1) هيكل 18 رقم هوية
رقم هوية المواطن هو رمز مركب مميز، يتكون من رمز شخصي مكون من سبعة عشر رقمًا ورمز فحص مكون من رقم واحد.
الترتيب من اليسار إلى اليمين هو: رمز العنوان المكون من ستة أرقام، ورمز تاريخ الميلاد المكون من ثمانية أرقام، ورمز التسلسل المكون من ثلاثة أرقام، ورمز التحقق المكون من رقم واحد.
1. رمز العنوان
يشير إلى رمز تقسيم المنطقة الإدارية للمقاطعة (المدينة، البانر، المنطقة) حيث يقع مكان الإقامة الدائم لكائن الترميز، ويجب تنفيذه وفقًا لأحكام GB/T2260.
2. رمز تاريخ الميلاد
يشير إلى سنة وشهر ويوم ميلاد كائن الترميز. ويتم تنفيذه وفقًا لأحكام GB/T7408. ولا يوجد فاصل بين رموز السنة والشهر واليوم.
3. رمز التسلسل
يشير إلى أنه داخل المنطقة المحددة بواسطة نفس رمز العنوان، يتم تعيين الأرقام التسلسلية للأشخاص المولودين في نفس السنة والشهر واليوم، ويتم تعيين الأرقام الفردية لرموز التسلسل للذكور، ويتم تعيين الأرقام الزوجية للإناث .
4. التحقق من خطوات حساب الكود
(1) صيغة الجمع المرجحة لرمز الوجود المكون من سبعة عشر رقمًا
S = Sum(Ai * Wi)، i = 0، ... ، 16، أولًا اجمع أوزان أول 17 رقمًا
Ai: يمثل القيمة الرقمية لرقم المعرف في الموضع i (0~9)
Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (يشير إلى عامل الترجيح في الموضع i)
(2) نموذج الحساب
ص = وزارة الدفاع (س، 11)
(3) وفقًا للوحدة، ابحث عن رمز الفحص المقابل
ص: 0 1 2 3 4 5 6 7 8 9 10
رمز التحقق: 1 0 X 9 8 7 6 5 4 3 2
(2) مثال برنامجي للحصول على الرقم الأخير من رمز الشيك بناءً على الكود الأنطولوجي المكون من 17 رقمًا
انسخ رمز الكود كما يلي:
معرف الفئة العامة 18 {
int[] الوزن={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; // وزن كود علم الوجود المكون من سبعة عشر رقمًا
char[] validate={ '1','0','X','9','8','7','6','5','4','3','2'} // mod11، المطابق لقيمة حرف رمز التحقق
الحرف العام getValidateCode(String id17){
مجموع كثافة العمليات=0;
وضع int=0;
for(int i=0;i<id17.length();i++){
sum=sum+Integer.parseInt(String.valueOf(id17.charAt(i)))*weight[i];
}
الوضع=مجموع%11;
التحقق من صحة العودة [الوضع]؛
}
public static void main(String[] args){
اختبار Id18=new Id18();
System.out.println("رمز التحقق من بطاقة الهوية هذه:"+test.getValidateCode("14230219700101101")); //رمز التحقق من بطاقة الهوية هذه: 3
}
}
(3) الشرح
1. يمكن للبرنامج الحصول على رمز التحقق المقابل بناءً على رمز الوجود الموجود المكون من 17 رقمًا.
2. يمكن لهذا البرنامج حذف أرقام الهوية التي تحتوي على رموز تحقق غير صحيحة.
3. تستخدم سنة ميلاد بطاقة الهوية المكونة من 15 رقماً آخر رقمين من السنة، دون آخر رقم واحد من رمز الشيك.
4. بطاقة الهوية الكاملة مكونة من 18 رقم، وآخر رقم فحص قد يكون غير رقم. في أحد مشاريعنا، تقوم قاعدة البيانات بحفظ أول 17 رقمًا، مما قد يؤدي إلى تسريع بعض عبارات SQL (مثل الصلة الداخلية)! ! !