如何检查 IBAN 验证?

Posted

技术标签:

【中文标题】如何检查 IBAN 验证?【英文标题】:How to check IBAN validation? 【发布时间】:2019-07-19 23:05:51 【问题描述】:

如何在 Java 中验证 IBAN(国际银行帐号)以在 android 应用程序中使用?

国际银行帐号是一种国际公认的跨国界银行账户识别系统,以促进跨境交易的沟通和处理,同时降低转录错误的风险。

【问题讨论】:

【参考方案1】:
private boolean isIbanValid(String iban) 

    int IBAN_MIN_SIZE = 15;
    int IBAN_MAX_SIZE = 34;
    long IBAN_MAX = 999999999;
    long IBAN_MODULUS = 97;

    String trimmed = iban.trim();

    if (trimmed.length() < IBAN_MIN_SIZE || trimmed.length() > IBAN_MAX_SIZE) 
        return false;
    

    String reformat = trimmed.substring(4) + trimmed.substring(0, 4);
    long total = 0;

    for (int i = 0; i < reformat.length(); i++) 

        int charValue = Character.getNumericValue(reformat.charAt(i));

        if (charValue < 0 || charValue > 35) 
            return false;
        

        total = (charValue > 9 ? total * 100 : total * 10) + charValue;

        if (total > IBAN_MAX) 
            total = (total % IBAN_MODULUS);
        
    

    return (total % IBAN_MODULUS) == 1;

【讨论】:

【参考方案2】:

实施这些步骤:https://en.wikipedia.org/wiki/International_Bank_Account_Number#Validating_the_IBAN

另外,long 太小,无法容纳数字。你需要一个 BigInteger。

private boolean isIbanValid(String iban) 
    // remove spaces
    iban = iban.replace("\\s", "");

    // make all uppercase
    iban = iban.toUpperCase();

    // check length - complicated, depends on country. Skipping for now.
    // https://en.wikipedia.org/wiki/International_Bank_Account_Number#Structure

    // move first four letters to the end
    iban = iban.substring(4) + iban.substring(0,4);

    // convert letters to digits
    String total = "";
    for (int i = 0; i < iban.length(); i++) 

        int charValue = Character.getNumericValue(iban.charAt(i));

        if (charValue < 0 || charValue > 35) 
            return false;
        

        total += charValue;
    

    // Make BigInteger and check if modulus 97 is 1 
    BigInteger totalInt = new BigInteger(total);
    return totalInt.mod(new BigInteger("97")).equals(BigInteger.ONE);

【讨论】:

以上是关于如何检查 IBAN 验证?的主要内容,如果未能解决你的问题,请参考以下文章

验证 IBAN PHP

C 将 20 位字符串转换为数字以进行 IBAN 验证

如何在 C# 中进行 SWIFT 代码和 IBAN 验证

IBAN 的正则表达式允许空格并检查确切长度

IBAN 验证器 Swift

简单的 JavaScript IBAN 验证