무작위 형식 준수 IBAN을 생성하거나 기존 IBAN을 검증하는 간단한 도구입니다. 금융 애플리케이션, 은행 소프트웨어 및 교육 목적으로 완벽합니다.
국제 은행 계좌 번호(IBAN) 생성기 및 검증기는 금융 애플리케이션, 은행 소프트웨어 및 교육적 맥락에서 테스트 및 검증 목적으로 설계된 종합 도구입니다. 이 사용자 친화적인 애플리케이션은 두 가지 필수 기능을 제공합니다: 형식에 맞는 무작위 IBAN을 생성하고 사용자 입력 IBAN의 구조적 무결성을 검증합니다. 금융 소프트웨어를 테스트하는 개발자, 은행 애플리케이션을 검증하는 QA 전문가, 또는 국제 은행 기준을 설명하는 교육자라면 이 도구는 복잡한 구성이나 제3자 통합 없이 간단한 솔루션을 제공합니다.
IBAN(국제 은행 계좌 번호)은 국제적으로 사용되는 표준화된 계좌 식별자로, 국경 간 거래를 촉진하고 국제 송금에서 오류를 줄이기 위해 사용됩니다. 각 IBAN은 국가 코드, 체크 숫자 및 국가별 형식을 따르는 기본 은행 계좌 번호(BBAN)로 구성됩니다. 우리의 도구는 여러 국가 형식을 지원하며 생성된 모든 IBAN이 ISO 13616 표준에 명시된 MOD 97 검증 알고리즘을 통과하도록 보장합니다.
IBAN은 최대 34개의 영숫자 문자로 구성되지만 정확한 길이는 국가에 따라 다릅니다. 표준 구조는 다음과 같습니다:
예를 들어, 독일 IBAN은 DE2!n8!n10!n
구조를 따릅니다:
DE
는 국가 코드2!n
은 두 자리 숫자 체크 숫자를 나타냅니다8!n
은 8자리 은행 코드를 나타냅니다10!n
은 10자리 계좌 번호를 나타냅니다국가마다 BBAN 형식이 다르므로 IBAN 길이가 다양합니다:
국가 | 길이 | 구조 | 예시 |
---|---|---|---|
독일 (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
영국 (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
프랑스 (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
스페인 (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
이탈리아 (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
IBAN 검증 프로세스는 ISO 7064 표준에 명시된 MOD 97 알고리즘을 사용합니다. 작동 방식은 다음과 같습니다:
수학적으로 이는 다음과 같이 표현됩니다:
우리의 검증기는 이 알고리즘을 구현하여 사용자가 입력한 IBAN의 구조적 무결성을 검증합니다.
IBAN 생성기는 테스트 목적으로 무작위이지만 유효한 IBAN을 생성합니다. 주요 기능은 다음과 같습니다:
생성기는 다음과 같이 IBAN을 생성합니다:
IBAN 검증기는 사용자 입력 IBAN의 구조적 무결성을 확인합니다. 주요 기능은 다음과 같습니다:
검증기는 여러 가지 검사를 수행합니다:
IBAN 생성기 및 검증기 도구는 다양한 분야에서 여러 용도로 사용됩니다:
우리 IBAN 생성기 및 검증기 도구는 테스트 목적을 위한 간소화된 경험을 제공하지만 고려해야 할 대안적인 접근 방식이 있습니다:
우리 도구는 이러한 대안들 사이의 간극을 메워주며, 기술적 통합이나 유료 구독 없이 생성 및 검증 기능을 위한 간단하고 접근 가능한 인터페이스를 제공합니다.
IBAN(국제 은행 계좌 번호)은 국경을 넘어 은행 계좌를 식별하기 위해 개발된 표준화된 국제 번호 체계입니다. 이는 오류 없는 국제 거래를 촉진하기 위해 국제 표준화 기구(ISO)에 의해 설정되었습니다.
IBAN 생성기는 ISO 13616 표준에 명시된 MOD 97 체크 알고리즘을 통과하는 구조적으로 유효한 IBAN을 생성합니다. 생성된 IBAN은 수학적으로 유효하지만 무작위로 생성되며 실제 은행 계좌와 연결되어 있지 않으므로 테스트에 적합하지만 실제 거래에는 사용할 수 없습니다.
현재 이 도구는 독일, 영국, 프랑스, 스페인, 이탈리아, 네덜란드, 스위스, 오스트리아, 벨기에 및 폴란드의 IBAN 형식을 지원합니다. 이는 유럽에서 가장 일반적으로 사용되는 IBAN 형식을 포함합니다.
아니요. 이 생성기가 생성한 IBAN은 구조적으로 유효하지만 무작위로 생성된 것입니다. 실제 은행 계좌와 연결되어 있지 않으므로 테스트, 교육 또는 시연 목적으로만 사용해야 합니다.
검증기는 IBAN의 여러 측면을 확인합니다:
아니요. IBAN은 가독성을 위해 종종 공백으로 표시되지만(일반적으로 4자씩 그룹화됨) 검증 중에는 공백이 무시됩니다. 우리의 도구는 형식화된 IBAN과 비형식화된 IBAN 모두를 처리합니다.
아니요. 이 도구는 완전히 브라우저에서 작동합니다. 어떠한 IBAN 데이터도 서버에 전송되거나 저장되거나 제3자와 공유되지 않습니다. 귀하의 데이터는 개인적이고 안전하게 유지됩니다.
현재 이 도구는 드롭다운 목록에 나열된 지원 국가의 IBAN만 검증합니다. 추가 국가에 대한 검증이 필요한 경우 피드백 양식을 통해 알려주십시오.
IBAN이 검증에 실패할 수 있는 이유는 여러 가지가 있습니다:
도구 개선을 위한 피드백을 환영합니다. 페이지 하단의 링크를 통해 접근할 수 있는 피드백 양식을 사용하여 문제를 보고하거나 개선 사항을 제안해 주십시오.
IBAN 검증 및 생성을 자신의 애플리케이션에 구현하는 데 관심이 있는 개발자를 위해 다양한 프로그래밍 언어의 코드 예제를 제공합니다:
1function validateIban(iban) {
2 // 공백 제거 및 대문자로 변환
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // 기본 형식 확인
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // 처음 4자를 끝으로 이동
11 const rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
12 // 문자를 숫자로 변환
13 const converted = rearranged.split('').map(char => {
14 if (/[A-Z]/.test(char)) {
15 return (char.charCodeAt(0) - 55).toString();
16 }
17 return char;
18 }).join('');
19
20 // mod 97 계산
21 let remainder = 0;
22 for (let i = 0; i < converted.length; i++) {
23 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
24 }
25
26 return remainder === 1;
27}
28
29// 사용 예
30console.log(validateIban('DE89 3704 0044 0532 0130 00')); // true
31console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // true
32console.log(validateIban('DE89 3704 0044 0532 0130 01')); // false (유효하지 않은 체크 숫자)
33
1def validate_iban(iban):
2 # 공백 제거 및 대문자로 변환
3 iban = iban.replace(' ', '').upper()
4
5 # 기본 형식 확인
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # 처음 4자를 끝으로 이동
10 rearranged = iban[4:] + iban[:4]
11
12 # 문자를 숫자로 변환 (A=10, B=11, ..., Z=35)
13 converted = ''
14 for char in rearranged:
15 if char.isalpha():
16 converted += str(ord(char) - 55)
17 else:
18 converted += char
19
20 # 체크 숫자가 97과 같아야 함
21 return int(converted) % 97 == 1
22
23# 사용 예
24print(validate_iban('DE89 3704 0044 0532 0130 00')) # True
25print(validate_iban('GB29 NWBK 6016 1331 9268 19')) # True
26print(validate_iban('DE89 3704 0044 0532 0130 01')) # False (유효하지 않은 체크 숫자)
27
1public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // 공백 제거 및 대문자로 변환
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // 기본 형식 확인
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // 처음 4자를 끝으로 이동
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // 문자를 숫자로 변환
15 StringBuilder converted = new StringBuilder();
16 for (char c : rearranged.toCharArray()) {
17 if (Character.isLetter(c)) {
18 converted.append(c - 'A' + 10);
19 } else {
20 converted.append(c);
21 }
22 }
23
24 // BigInteger를 사용하여 mod 97 계산
25 BigInteger numeric = new BigInteger(converted.toString());
26 return numeric.mod(BigInteger.valueOf(97)).intValue() == 1;
27 }
28
29 public static void main(String[] args) {
30 System.out.println(validateIban("DE89 3704 0044 0532 0130 00")); // true
31 System.out.println(validateIban("GB29 NWBK 6016 1331 9268 19")); // true
32 System.out.println(validateIban("DE89 3704 0044 0532 0130 01")); // false
33 }
34}
35
1function generateIban(countryCode) {
2 const countryFormats = {
3 'DE': { length: 22, bbanPattern: '8n10n' },
4 'GB': { length: 22, bbanPattern: '4a6n8n' },
5 'FR': { length: 27, bbanPattern: '5n5n11c2n' }
6 // 필요한 경우 더 많은 국가 추가
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`국가 코드 ${countryCode}는 지원되지 않습니다`);
11 }
12
13 // 국가 형식에 따라 무작위 BBAN 생성
14 let bban = '';
15 const pattern = countryFormats[countryCode].bbanPattern;
16 let i = 0;
17
18 while (i < pattern.length) {
19 const count = parseInt(pattern.substring(i + 1), 10);
20 const type = pattern[i];
21
22 if (type === 'n') {
23 // 숫자 생성
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // 알파벳 생성
29 for (let j = 0; j < count; j++) {
30 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
31 }
32 } else if (type === 'c') {
33 // 알파벳 및 숫자 생성
34 for (let j = 0; j < count; j++) {
35 const isLetter = Math.random() > 0.5;
36 if (isLetter) {
37 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
38 } else {
39 bban += Math.floor(Math.random() * 10);
40 }
41 }
42 }
43
44 i += 2;
45 }
46
47 // 체크 숫자 계산
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // 체크 숫자 계산을 위한 초기 IBAN 생성
55 const initialIban = countryCode + '00' + bban;
56
57 // 재배치 및 문자를 숫자로 변환
58 const rearranged = bban + countryCode + '00';
59 const converted = rearranged.split('').map(char => {
60 if (/[A-Z]/.test(char)) {
61 return (char.charCodeAt(0) - 55).toString();
62 }
63 return char;
64 }).join('');
65
66 // 98에서 mod 97을 뺀 값을 계산
67 let remainder = 0;
68 for (let i = 0; i < converted.length; i++) {
69 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
70 }
71
72 const checkDigits = (98 - remainder).toString().padStart(2, '0');
73 return checkDigits;
74}
75
76// 사용 예
77console.log(generateIban('DE')); // 유효한 독일 IBAN 생성
78console.log(generateIban('GB')); // 유효한 영국 IBAN 생성
79
1import random
2import string
3
4def generate_iban(country_code):
5 country_formats = {
6 'DE': {'length': 22, 'bban_format': '8n10n'},
7 'GB': {'length': 22, 'bban_format': '4a6n8n'},
8 'FR': {'length': 27, 'bban_format': '5n5n11c2n'}
9 # 필요한 경우 더 많은 국가 추가
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"국가 코드 {country_code}는 지원되지 않습니다")
14
15 # 국가 형식에 따라 무작위 BBAN 생성
16 bban = ''
17 format_str = country_formats[country_code]['bban_format']
18 i = 0
19
20 while i < len(format_str):
21 count = int(''.join(c for c in format_str[i+1:] if c.isdigit()))
22 type_char = format_str[i]
23
24 if type_char == 'n': # 숫자
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # 알파벳
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # 알파벳 및 숫자
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # 체크 숫자 계산
34 check_digits = calculate_check_digits(country_code, bban)
35
36 return country_code + check_digits + bban
37
38def calculate_check_digits(country_code, bban):
39 # 체크 숫자 계산을 위한 문자열 생성
40 check_string = bban + country_code + '00'
41
42 # 문자를 숫자로 변환 (A=10, B=11, ..., Z=35)
43 numeric = ''
44 for char in check_string:
45 if char.isalpha():
46 numeric += str(ord(char.upper()) - 55)
47 else:
48 numeric += char
49
50 # 98에서 mod 97을 뺀 값을 계산
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# 사용 예
57print(generate_iban('DE')) # 유효한 독일 IBAN 생성
58print(generate_iban('GB')) # 유효한 영국 IBAN 생성
59
IBAN 생성기 및 검증기 도구는 국제 은행 식별자와 관련된 테스트 및 교육 목적으로 간단하지만 강력한 솔루션을 제공합니다. 생성 및 검증 기능을 사용자 친화적인 인터페이스로 제공함으로써 복잡한 구성이나 제3자 통합의 필요성을 없앱니다.
금융 애플리케이션을 개발하거나 지급 시스템을 테스트하거나 국제 은행 기준에 대해 배우고 있다면 이 도구는 IBAN을 다루는 간단한 방법을 제공합니다. 종합적인 검증은 생성된 모든 IBAN이 구조적으로 건전하고 국제 표준을 준수하도록 보장합니다.
지금 IBAN을 생성하거나 검증하여 도구의 기능을 직접 경험해 보세요!
귀하의 워크플로에 유용할 수 있는 더 많은 도구를 발견하세요.