首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算和检查IBAN

计算和检查IBAN
EN

Stack Overflow用户
提问于 2019-07-26 17:28:49
回答 1查看 520关注 0票数 1

计算IBAN键并将其与iban中输入的键进行比较的算法:

  • 删除国家代码和密钥
  • 把国家代码和一个键00放在末尾。
  • 在数字中转换字符(A=10;B=11;.)
  • 计算模量97
  • 删除98的结果
  • 你有钥匙

模函数被重写为大数。

检查下面的答案作为一个解决方案

EN

回答 1

Stack Overflow用户

发布于 2019-07-26 17:30:31

代码语言:javascript
复制
function IsIbanValid(iban) {
    // example "FR76 1020 7000 2104 0210 1346 925"
    //         "CH10 0023 00A1 0235 0260 1"

    var keyIBAN = iban.substring(2, 4);    // 76
    var compte = iban.substring(4, iban.length );
    var compteNum = '';
    compte = compte + iban.substring(0, 2);

    // convert  characters in numbers
    var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for (i = 0; i < compte.length; i++) {
        if (isNaN(compte[i]))
            for (j = 0; j < alphabet.length; j++) {
                if (compte[i] == alphabet[j])
                    compteNum += (j + 10).toString();
            }
        else
            compteNum += compte[i];
    }
    compteNum += '00';   // concat 00 for key  
    // end convert

    var result = modulo(compteNum, 97);

    if ((98-result) == keyIBAN)
        return true;
    else
        return false;
}

/// modulo for big numbers, (modulo % can't be used)
function modulo(divident, divisor) {
    var partLength = 10;

    while (divident.length > partLength) {
        var part = divident.substring(0, partLength);
        divident = (part % divisor) + divident.substring(partLength);
    }

    return divident % divisor;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57224626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档