计算机科学

首页 > 计算机科学

国际银行账户号码

2018-08-28 09:48:15     所属分类:校验和算法
印有该账户IBAN的英国银行本子

国际银行账户号码International Bank Account Number,简称IBAN)是各国各银行之间互相定立的标识号码,可降低国际间金融操作的失误。它最初是由欧洲银行标准委员会(ECBS)通过,后来被采纳为国际标准 ISO 13616:1997。目前的标准是ISO 13616:2007,表明SWIFT代码(ISO 9362)为正式的格式。最初开发是为了促进欧盟范围内的支付,但现在也已经实施到大多数欧洲国家和其他国家,尤其是在中东和加勒比海地区。IBAN最多包含34个字母和数字字符:首两个字母是ISO 3166-1α-2国家代码,然后两个校验位,校验位可检查完整性。最后一个是特定国家的基本银行账户号码(BBAN)。BBAN格式的决定是由每个国家的银行界的约束下,它必须是一个固定长度的不区分大小写的英数字。它包括国内银行账户号码,银行分行的号码,和潜在的路由信息。

目录

  • 1 算法
  • 2 基本银行账户号码
    • 2.1 使 IBAN生效
    • 2.2 产生 IBAN校对码
  • 3 实用性
    • 3.1 性质
      • 3.1.1 侦错
    • 3.2 各国 IBAN格式
  • 4 注释
  • 5 参考
  • 6 外部链接

算法

基本银行账户号码

基本银行账户号码(The Basic Bank Account Number,BBAN)的格式是由国家中央银行或相应机关所订定,格式并没有强制性。一国的基本银行账户号码须为固定长度且由大小写不敏感的英数字组成。其包括本国账户号码,子分支辨识码与路径资讯。各国皆可拥有不同的编号系统,最多三十字。

使 IBAN生效

IBAN转换成一整数后再取97的余数为1才为有效(规范于ISO 7064)。检验IBAN的步骤如下:

  1. 检查IBAN总长度是否对应于该国家,否则为无效IBAN。
  2. 将首四码移至字串末端。
  3. 以数字替代字串中字母,加长字串。A转成10,B转成11,以此类推。
  4. 新产生的数字除以97,若余数为1,则校对通过,该IBAN可能存在。

范例为一间虚拟英国银行,分类码为12-34-56,账户号码为98765432:

步骤 字串 计算
• IBAN: GB82 WEST 1234 5698 7654 32
• 整理: W E S T12345698765432 G B82
• 转为整数: 3214282912345698765432161182
• 计算余数: 3214282912345698765432161182 mod 97 = 1

产生 IBAN校对码

根据欧洲银行标准委员会,银行应负责产生其账户的IBAN。

所需算法为:

  1. 检查IBAN总长度对应于该国家。
  2. 以00代换两校对码。(如GB82代换成GB00)
  3. 将首四码移至字串末端。
  4. 以数字替代字串中字母,加长字串。A转成10,B转成11,以此类推。
  5. 将字串转换为一整数,省略在前面的0。
  6. 新产生的数字除以97,产生余数
  7. 将98减去余数,产生的数字成为校对码。假如结果为一位数字,前面补上零。

实用性

检查数字,使从一个单一的数据串在输入数据时的路由目标和账户号码发送银行(或客户)进行完整性检查。此检查是保证检测到在某一字符被忽略、重复、打错或两个字符被调换时能够发现。因此,路由和账号错误几乎不会同时发生。

IBAN以电子方式传送时不能包含空格,而印在纸上的IBAN以一组四个字分隔,最后一组长度不固定,如下面的例子所示:

国家 IBAN 格式例子
希腊 GR16 0110 1250 0000 0001 2300 695
英国 GB29 NWBK 6016 1331 9268 19
沙特阿拉伯 SA03 8000 0000 6080 1016 7519
瑞士 CH93 0076 2011 6238 5295 7
以色列 IL62 0108 0000 0009 9999 999

性质

侦错

透过取模,以下常见错误可被侦测到:

  • 任何单一置换错误(一数字遭替代,如 4234 变 1234)
  • 任何或将近任何单一传送错误 (相邻或间隔一位的两数字位置交换,如 12354 与 12543 与 12345).

有鉴于国际银行账户号码使用 取模-97,前述错误都会被侦测到。

  • 任何或将近任何移动错误 (整个字串向右或向左移动)
  • 以相当高的比率侦测出双置换错误(两个单一置换错误。如 7234587 与 1234567)
  • 高比例的其他错误

各国 IBAN格式

此表格简述各国之IBAN的格式:[1]

  • 于ISO两位国家代码之后的 kk 表示由IBAN其他字母计算而得的校对码。假如目前有疑虑,将于 Comments 列中指出。此状况存在于当 BBAN 之校对码使用和 IBAN校对码一样的算法。

BBAN列为IBAN中之BBAN部分的格式。大写字母 (A–Z) 以 "a"表示,数字 (0–9) 以 "n" 表示,不分大小写文数字 (a–z, A–Z, 0–9) 以 “c"。例如,保加利亚 BBAN (4a,6n,8c) 包含 4 大写字母,接着为6数字,再来为 8 不分大小写文数字。

  • 将引入IBAN的国家列于 italics, 预计引入时间 ‘’'加粗
国家 字母 BBAN 格式 IBAN 域 Comment
阿尔巴尼亚 28 8n, 16c ALkk bbbs sssx cccc cccc cccc cccc b = National bank code
s = Branch code
x = National check digit
c = Account number
安道尔 24 8n,12c ADkk bbbb ssss cccc cccc cccc b = National bank code
s = Branch code
c = Account number
奥地利 20 16n ATkk bbbb bccc cccc cccc b = National bank code
c = Account number
阿塞拜疆 28 4c,20n AZkk bbbb cccc cccc cccc cccc cccc b = National bank code
c = Account number
巴林 22 4a,14c BHkk bbbb cccc cccc cccc cc b = National bank code
c = Account number
比利时 16 12n BEkk bbbc cccc ccxx b = National bank code
c = Account number
x = National check digits
波斯尼亚和黑塞哥维纳 20 16n BAkk bbbs sscc cccc ccxx k = IBAN check digits (always 39)
b = National bank code
s = Branch code
c = Account number
x = National check digits
巴西 29 23n, 1a, 1c BRkk bbbb bbbb ssss sccc cccc ccct n k = IBAN check digits (Calculated by MOD 97-10)
b = National bank code
s = Branch code
c = Account number
t = Account type (Cheque account, Savings account etc.)
n = Owner account number ("1", "2" etc.)[2]
保加利亚 22 4a,6n,8c BGkk bbbb ssss ddcc cccc cc b = BIC bank code
s = Branch (BAE) number
d = Account type
c = Account number
哥斯达黎加 21 17n CRkk bbbc cccc cccc cccc c b = bank code
c = Account number
克罗地亚 21 17n HRkk bbbb bbbc cccc cccc c b = Bank code
c = Account number
塞浦路斯 28 8n,16c CYkk bbbs ssss cccc cccc cccc cccc b = National bank code
s = Branch code
c = Account number
捷克 24 20n CZkk bbbb ssss sscc cccc cccc b = National bank code
s = Account number prefix
c = Account number
丹麦 18 14n DKkk bbbb cccc cccc cc b = National bank code
c = Account number
多米尼加共和国 28 4a,20n DOkk bbbb cccc cccc cccc cccc cccc b = Bank identifier
c = Account number
爱沙尼亚 20 16n EEkk bbss cccc cccc cccx b = National bank code
s = Branch code
c = Account number
x = National check digit
法罗群岛[Note 1] 18 14n FOkk bbbb cccc cccc cx b = National bank code
c = Account number
x = National check digit
芬兰 18 14n FIkk bbbb bbcc cccc cx b = Bank and branch code
c = Account number
x = National check digit
法国[Note 2] 27 10n,11c,2n FRkk bbbb bggg ggcc cccc cccc cxx b = National bank code
g = Branch code
c = Account number
x = National check digits
格鲁吉亚 22 2c,16n GEkk bbcc cccc cccc cccc cc b = National bank code
c = Account number
德国 22 18n DEkk bbbb bbbb cccc cccc cc b = Bank and branch identifier
c = Account number
直布罗陀 23 4a,15c GIkk bbbb cccc cccc cccc ccc b = BIC bank code
c = Account number
希腊 27 7n,16c GRkk bbbs sssc cccc cccc cccc ccc b = National bank code
s = Branch code
c = Account number
格陵兰[Note 1] 18 14n GLkk bbbb cccc cccc cc b = National bank code
c = Account number
危地马拉 [3] 28 4c,20c GTkk bbbb mmtt cccc cccc cccc cccc b = National bank code
c = Account number
m = Currency
t = Account type
匈牙利 28 24n HUkk bbbs sssk cccc cccc cccc cccx b = National bank code
s = Branch code
c = Account number
x = National check digit
冰岛 26 22n ISkk bbbb sscc cccc iiii iiii ii b = National bank code
s = Branch code
c = Account number
i = holder's kennitala (national identification number).
爱尔兰 22 4c,14n IEkk aaaa bbbb bbcc cccc cc a = BIC bank code
b = Bank/branch code (sort code)
c = Account number
以色列 23 19n ILkk bbbn nncc cccc cccc ccc b = National bank code
n = Branch number
c = Account number 13 digits (padded with zeros)
意大利 27 1a,10n,12c ITkk xaaa aabb bbbc cccc cccc ccc x = Check char (CIN)
a = National bank code (Associazione bancaria italiana意大利语Associazione bancaria italiana or Codice ABI )
b = Branch code (Coordinate bancarie意大利语Coordinate bancarie or CABCodice d'Avviamento Bancario)
c = Account number
约旦[4] 30 4a, 22n JOkk bbbb nnnn cccc cccc cccc cccc cc b = National bank code
n = Branch code
c = Account number
哈萨克 20 3n,13c KZkk bbbc cccc cccc cccc b = National bank code
c = Account number
科索沃 20 4n,10n,2n XKkk bbbb cccc cccc cccc b = National bank code
c = Account number
科威特 30 4a, 22c KWkk bbbb cccc cccc cccc cccc cccc cc b = National bank code
c = Account number.
拉脱维亚 21 4a,13c LVkk bbbb cccc cccc cccc c b = BIC Bank code
c = Account number
黎巴嫩 28 4n,20c LBkk bbbb cccc cccc cccc cccc cccc b = National bank code
c = Account number
列支敦士登 21 5n,12c LIkk bbbb bccc cccc cccc c b = National bank code
c = Account number
立陶宛 20 16n LTkk bbbb bccc cccc cccc b = National bank code
c = Account number
卢森堡 20 3n,13c LUkk bbbc cccc cccc cccc b = National bank code
c = Account number
马其顿 19 3n,10c,2n MKkk bbbc cccc cccc cxx k = IBAN check digits (always = "07")
b = National bank code
c = Account number
x = National check digits
马耳他 31 4a,5n,18c MTkk bbbb ssss sccc cccc cccc cccc ccc b = BIC bank code
s = Branch code
c = Account number
毛里塔尼亚 27 23n MRkk bbbb bsss sscc cccc cccc cxx k = IBAN check digits (always 13)
b = National bank code
s = Branch code (fr:code guichet)
c = Account number
x = National check digits (clé RIB法语clé RIB)
毛里求斯 30 4a,19n,3a MUkk bbbb bbss cccc cccc cccc cccc cc b = National bank code
s = Branch identifier
c = Account number
摩纳哥 27 10n,11c,2n MCkk bbbb bsss sscc cccc cccc cxx b = National bank code
s = Branch code (fr:code guichet)
c = Account number
x = National check digits (clé RIB法语clé RIB).
摩尔多瓦 24 2c,18c MDkk bbcc cccc cccc cccc cccc b = National bank code
c = Account number
黑山 22 18n MEkk bbbc cccc cccc cccc xx k = IBAN check digits (always = "25")
b = Bank code
c = Account number
x = National check digits
18 4a,10n NLkk bbbb cccc cccc cc b = BIC Bank code
c = Account number
挪威 15 11n NOkk bbbb cccc ccx b = National bank code
c = Account number
x = Modulo-11 national check digit
巴基斯坦 24 4c,16n PKkk bbbb cccc cccc cccc cccc b = National bank code
c = Account number
巴勒斯坦 29 4c,21n PSkk bbbb xxxx xxxx xccc cccc cccc c b = National bank code
c = Account number
x = Not specified
波兰 28 24n PLkk bbbs sssx cccc cccc cccc cccc b = National bank code
s = Branch code
x = National check digit
c = Account number,
葡萄牙 25 21n PTkk bbbb ssss cccc cccc cccx x k = IBAN check digits (always = "50")
b = National bank code
s = Branch code
C = Account number
x = National check digit
卡达 29 4a, 21c QAkk bbbb cccc cccc cccc cccc cccc c b = National bank code
c = Account number[5]
罗马尼亚 24 4a,16c ROkk bbbb cccc cccc cccc cccc b = BIC Bank code
c = Branch code and account number (bank-specific format)
圣马力诺 27 1a,10n,12c SMkk xaaa aabb bbbc cccc cccc ccc x = Check char (CIN)
a = National bank code (Associazione bancaria italiana意大利语Associazione bancaria italiana or Codice ABI)
b = Branch code (Coordinate bancarie意大利语Coordinate bancarie or CABCodice d'Avviamento Bancario)
c = Account number
沙特阿拉伯 24 2n,18c SAkk bbcc cccc cccc cccc cccc b = National bank code
c = Account number preceded by zeros, if required
赛尔维亚 22 18n RSkk bbbc cccc cccc cccc xx b = National bank code
c = Account number
x = Account check digits
斯洛伐克 24 20n SKkk bbbb ssss sscc cccc cccc b = National bank code
s = Account number prefix
c = Account number
斯洛文尼亚 19 15n SIkk bbss sccc cccc cxx k = IBAN check digits (always = "56")
b = National bank code
s = Branch code
c = Account number
x = National check digits
西班牙 24 20n ESkk bbbb gggg xxcc cccc cccc b = National bank code
g = Branch code
x = Check digits
c = Account number
瑞典 24 20n SEkk bbbc cccc cccc cccc cccx b = National bank code
c = Account number
x = Checksum
瑞士 21 5n,12c CHkk bbbb bccc cccc cccc c b = National bank code
c = Account number
突尼斯 24 20n TNkk bbss sccc cccc cccc cccc k = IBAN check digits (always 59)
b = National bank code
s = Branch code
c = Account number
土耳其 26 5n,17c TRkk bbbb bxcc cccc cccc cccc cc b = National bank code
x = Reserved for future use (currently "0")
c = Account number
阿拉伯联合酋长国 23 3n,16n AEkk bbbc cccc cccc cccc ccc b = National bank code
c = Account number
英国[Note 4] 22 4a,14n GBkk bbbb ssss sscc cccc cc b = BIC bank code
s = Bank and branch code (sort code)
c = Account number
英属维京群岛 24 4c,16n VGkk bbbb cccc cccc cccc cccc b = National bank code
c = Account number

注释

  1. ^ 1.0 1.1 Registered at SWIFT as part of Denmark, but with its own country code.
  2. ^ 法属圭亚那、French Polynesia, French Southern Territories, Guadeloupe, Martinique, Mayotte, 新喀里多尼亚、Réunion、Saint Barthélemy, Saint Martin (French part), Saint Pierre and Miquelon、Wallis and Futuna Islands 有自己的ISO国家代码,但他们会使用"FR"做为IBAN国家代码。
  3. ^ Not applicable to Aruba, Curaçao, Sint Maarten, and the Caribbean Netherlands.
  4. ^ The United Kingdom of Great Britain and Northern Ireland, the Isle of Man and the Bailiwicks of Guernsey and Jersey use this format. British Overseas Territories have their own formats — only Gibraltar and the British Virgin Islands use IBANs.

参考

  1. ^ IBAN registry – This registry provides detailed information about all ISO 13616-compliant national IBAN formats – Release 45 (PDF). SWIFT. April 2013 [11 March 2013]. (原始内容 (PDF)存档于2013年11月1日). 
  2. ^ IBAN Implementation Guidelines for Brazil - Circular 3.625 (PDF). Banco Central do Brasil. 14 February 2013 [1 August 2013]. 
  3. ^ https://www.banguat.gob.gt:8876/iban/CuentaEstandarizada/CuentaEstandarizada.aspx
  4. ^ http://www.citi.com/jordan/homepage/pdf/IBAN-letter.pdf
  5. ^ IBAN Registry (Qatar - Page 63) (PDF). SWIFT. November 2013 [21 November 2013]. (原始内容 (PDF)存档于2013年11月1日). 

外部链接

检查来自80多个国家的银行IBAN的有效性。


上一篇:MD5
下一篇:循环冗余校验
相关推荐