VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > C#编程 >
  • C#教程之护照 MRZ码编码规则

本站最新发布   C#从入门到精通
试听地址  
https://www.xin3721.com/eschool/CSharpxin3721/

护照资料也下方的两行成为MRZ码(或护照机读码),每行44个字符(0-9,A-Z,<),如下例:

1 2 3 4 5 6 7 8 9 101 2 3 4 5 6 7 8 9 201 2 3 4 5 6 7 8 9 301 2 3 4 5 6 7 8 9 401 2 3 4
P O C H N Z H A N G < < S A N < < < < < < < < < < < < < < < < < < < < < < < < < < < < <
G 4 8 9 4 7 6 4 6 4 C H N 7 3 0 4 2 7 9 M 2 1 0 1 2 6 6 1 9 2 0 3 3 0 1 < < < < < < 1 6

第一行

1.P:代表护照

2.O:代表护照类型

3-5:国家代码,见最后

6-44:39位姓名,姓和名之间用<<隔开,姓(Surname)和名(Given names)若有多个单词则用<隔开,最后用<补足39个字符

第二行

1-9:护照号码
10:1-9的验证码,验证算法如下

        int Compute(string source)
        {
            string s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            int[] w = new int[] { 7, 3, 1 };
            int c = 0;
            for (int i = 0; i < source.Length; i++)
            {
                if (source[i] == '<')
                    continue;
                c += s.IndexOf(source[i]) * w[i % 3];
            }
            c %= 10;
            return c;

        }

11-13:国家代码

14-19:生日

20:生日的验证码,验证规则同上

21:性别(M:男,F:女)

22-27:护照有效期

28:护照有效期验证码

29-42:个人代码,每个国家都不一样

43:个人代码的验证码

44:第二行1-10,14-20,22-43的验证码

var line2string = "G489476464CHN7304279M210126619203301<<<<<<16";
var lastvalue = Compute(line2string.Substring(0, 10) + line2string.Substring(13, 7) + line2string.Substring(21, 22)); //lastvalue=6

附:国家代码表

ABW:阿鲁巴
AFG:阿富汗
AGO:安哥拉
AIA:安圭拉
ALA:奥兰群岛

ALB:阿尔巴尼亚
AND:安道尔
ANT:荷属安的列斯

ARE:阿联酋
ARG:阿根廷
ARM:亚美尼亚

ASM:美属萨摩亚
ATA:南极洲
ATF:法属南领地
ATG:安提瓜和巴布达
AUS:澳大利亚

AUT:奥地利
AZE:阿塞拜疆

BDI:布隆迪
BEL:比利时
BEN:贝宁

BES:博内尔岛、圣尤斯特歇斯岛和萨巴岛
BFA:布基纳法索
BGD:孟加拉国

BGR:保加利亚

BHR:巴林

BHS:巴哈马
BIH:波黑

BLM:圣巴泰勒米岛

BLR:白俄罗斯

BLZ:伯利兹
BMU:百慕大
BOL:玻利维亚

BRA:巴西

BRB:巴巴多斯

BRN:文莱

BTN:不丹

BVT:布维岛
BWA:博茨瓦纳

CAF:中非

CAN:加拿大
CB:加那利群岛
CCK:科科斯(基灵)群岛
CE:塞卜泰(休达)
CHE:瑞士

CHL:智利

CHN:中国

CIV:科特迪瓦

CMR:喀麦隆
COD:刚果(金)
COG:刚果(布)
COK:库克群岛

COL:哥伦比亚

COM:科摩罗
CPV:佛得角
CRI:哥斯达黎加
CT:坎顿和恩德贝里群岛
CUB:古巴

CUW:库拉索
CXR:圣诞岛
CYM:开曼群岛

CYP:塞浦路斯

CZE:捷克

DEU:德国

DJI:吉布提
DMA:多米尼克

DNK:丹麦

DOM:多米尼加

DZA:阿尔及利亚
ECU:厄瓜多尔

EGY:埃及

ERI:厄立特里亚
ESH:西撒哈拉

ESP:西班牙
EST:爱沙尼亚

ETH:埃塞俄比亚
FIN:芬兰

FJI:斐济

FLK:福克兰群岛(马尔维纳斯)

FRA:法国

FRO:法罗群岛

FSM:密克罗尼西亚联邦

GAB:加蓬

GBD:英国(属地公民)

GBN:英国(国民(海外))

GBO:英国(海外公民)

GBP:英国(被保护人)

GBR:英国

GBS:英国(臣民)

GEO:格鲁吉亚

GGY:根西岛
GHA:加纳

GIB:直布罗陀
GIN:几内亚
GLP:瓜德罗普

GMB:冈比亚
GNB:几内亚比绍
GNQ:赤道几内亚
GRC:希腊

GRD:格林纳达

GRL:格陵兰
GTM:危地马拉

GUF:法属圭亚那
GUM:关岛

GUY:圭亚那
HKG:中国香港

HMD:赫德岛和麦克唐纳群岛

HND:洪都拉斯

HRV:克罗地亚

HTI:海地

HUN:匈牙利
IDN:印度尼西亚
IMN:马恩岛
IND:印度

IOT:英属印度洋领地
IRL:爱尔兰
IRN:伊朗

IRQ:伊拉克
ISL:冰岛

ISR:以色列
ITA:意大利
JAM:牙买加
JEY:泽西

JI:贾维斯岛(大洋洲)
JOR:约旦

JPN:日本

JTN:约翰斯顿岛
KAZ:哈萨克斯坦
KEN:肯尼亚
KGZ:吉尔吉斯斯坦

KHM:柬埔寨
KIR:基里巴斯

KNA:圣基茨和尼维斯
KOR:韩国

KWT:科威特
LAO:老挝
LBN:黎巴嫩
LBR:利比里亚

LBY:利比亚
LCA:圣卢西亚

LIE:列支敦士登
LKA:斯里兰卡

LSO:莱索托
LTU:立陶宛
LUX:卢森堡
LVA:拉脱维亚

MAC:中国澳门

MAF:圣马丁岛(法属)

MAR:摩洛哥
MCO:摩纳哥
MDA:摩尔多瓦

MDG:马达加斯加
MDV:马尔代夫

ME:梅利利亚

MEX:墨西哥
MHL:马绍尔群岛
MID:中途岛
MKD:北马其顿

MLI:马里

MLT:马耳他
MMR:缅甸

MNE:黑山

MNG:蒙古

MNP:北马里亚纳群岛
MOZ:莫桑比克

MRT:毛里塔尼亚
MSR:蒙特塞拉特
MTQ:马提尼克

MUS:毛里求斯

MWI:马拉维
MYS:马来西亚

MYT:马约特
NAM:纳米比亚

NCL:新喀里多尼亚
NER:尼日尔
NFK:诺福克岛

NGA:尼日利亚

NIC:尼加拉瓜

NIU:纽埃

NLD:荷兰

NN:无国籍
NOR:挪威

NPL:尼泊尔
NQ:毛德地
NRU:瑙鲁

NTZ:中立区
NZL:新西兰
OMN:阿曼

PAK:巴基斯坦

PAN:巴拿马
PCN:皮特凯恩

PER:秘鲁

PHL:菲律宾
PLW:帕劳

PNG:巴布亚新几内亚
POL:波兰

PRI:波多黎各

PRK:朝鲜

PRT:葡萄牙
PRY:巴拉圭
PSE:巴勒斯坦

PUS:美属太平洋群岛
PYF:法属波利尼西亚
PZ:巴拿马运河带

QAT:卡塔尔
REU:留尼汪岛

ROU:罗马尼亚

RUS:俄罗斯
RWA:卢旺达
SAU:沙特

SDN:苏丹

SEN:塞内加尔

SGP:新加坡
SGS:南乔治亚和南桑威奇群岛
SHN:圣赫勒拿岛、阿森松岛和特里斯坦达库尼亚群岛
SJM:斯瓦尔巴和扬马延群岛

SLB:所罗门群岛
SLE:塞拉利昂

SLV:萨尔瓦多

SMR:圣马力诺

SOM:索马里
SP:萨巴

SPM:圣皮埃尔和密克隆

SQ:圣马丁岛

SRB:塞尔维亚

SS:塞班

SSD:南苏丹
STP:圣多美和普林西比

SUR:苏里南
SVK:斯洛伐克

SVN:斯洛文尼亚
SWE:瑞典

SWZ:斯威士兰

SXM:圣马丁岛(荷属)

SYC:塞舌尔
SYR:叙利亚
TCA:特克斯和凯科斯群岛
TCD:乍得

TGO:多哥

THA:泰国

TJK:塔吉克斯坦
TKL:托克劳群岛
TKM:土库曼斯坦
TLS:东帝汶
TON:汤加

TTO:特立尼达和多巴哥

TUN:突尼斯
TUR:土耳其
TUV:图瓦卢
TWN:中国台湾

TX:塔希提
TZA:坦桑尼亚

UGA:乌干达
UKR:乌克兰
UMI:美国本土外小岛屿

UN:联合国
UNA:联合国
UNO:联合国
URY:乌拉圭
USA:美国

UZB:乌兹别克斯坦

VAT:梵蒂冈
VCT:圣文森特和格林纳丁斯

VEN:委内瑞拉

VGB:维尔京群岛(英属)
VIR:维尔京群岛(美属)
VNM:越南

VUT:瓦努阿图

WAK:威克岛
WLF:瓦利斯和富图纳群岛
WSM:萨摩亚
XXA:无国籍(无国籍人)
XXB:被联合国承认的难民
XXC:不被联合国承认的难民

XXX:国籍不明

YEM:也门

YKS:科索沃
ZAF:南非

ZMB:赞比亚
ZWE:津巴布韦

ZZZ:国籍不详

 
相关教程