Tạo các số IBAN ngẫu nhiên tuân thủ định dạng hoặc xác thực các số IBAN hiện có với công cụ đơn giản của chúng tôi. Hoàn hảo cho việc kiểm tra các ứng dụng tài chính, phần mềm ngân hàng và mục đích giáo dục.
Công cụ Tạo và Xác thực Số Tài Khoản Ngân Hàng Quốc Tế (IBAN) là một công cụ toàn diện được thiết kế cho mục đích kiểm tra và xác minh trong các ứng dụng tài chính, phần mềm ngân hàng và các bối cảnh giáo dục. Ứng dụng thân thiện với người dùng này cung cấp hai tính năng thiết yếu: tạo ra các IBAN ngẫu nhiên nhưng tuân thủ định dạng và xác thực tính toàn vẹn cấu trúc của các IBAN do người dùng nhập vào. Dù bạn là một nhà phát triển đang kiểm tra phần mềm tài chính, một chuyên gia QA xác minh các ứng dụng ngân hàng, hay một nhà giáo dục đang giải thích các tiêu chuẩn ngân hàng quốc tế, công cụ này cung cấp một giải pháp đơn giản mà không cần cấu hình phức tạp hay tích hợp bên thứ ba.
IBAN (Số Tài Khoản Ngân Hàng Quốc Tế) là các định danh tài khoản tiêu chuẩn được sử dụng quốc tế để tạo điều kiện cho các giao dịch xuyên biên giới và giảm thiểu lỗi trong các chuyển tiền quốc tế. Mỗi IBAN bao gồm một mã quốc gia, các chữ số kiểm tra, và một số tài khoản ngân hàng cơ bản (BBAN) theo các định dạng cụ thể của từng quốc gia. Công cụ của chúng tôi hỗ trợ nhiều định dạng quốc gia và đảm bảo tất cả các IBAN được tạo ra đều vượt qua thuật toán xác thực MOD 97 được quy định trong tiêu chuẩn ISO 13616.
Một IBAN bao gồm tối đa 34 ký tự alphanumeric, mặc dù chiều dài chính xác thay đổi theo quốc gia. Cấu trúc tiêu chuẩn bao gồm:
Ví dụ, một IBAN của Đức theo cấu trúc DE2!n8!n10!n
trong đó:
DE
là mã quốc gia2!n
đại diện cho hai chữ số kiểm tra số8!n
đại diện cho mã ngân hàng tám chữ số10!n
đại diện cho số tài khoản mười chữ sốCác quốc gia khác nhau có các định dạng BBAN khác nhau, dẫn đến chiều dài IBAN khác nhau:
Quốc gia | Chiều dài | Cấu trúc | Ví dụ |
---|---|---|---|
Đức (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
Vương quốc Anh (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
Pháp (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
Tây Ban Nha (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
Ý (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
Quá trình xác thực IBAN sử dụng thuật toán MOD 97 như được quy định trong tiêu chuẩn ISO 7064. Cách thức hoạt động như sau:
Về mặt toán học, điều này được biểu diễn như sau:
Trình xác thực của chúng tôi thực hiện thuật toán này để xác minh tính toàn vẹn cấu trúc của bất kỳ IBAN nào do người dùng nhập vào.
Trình tạo IBAN tạo ra các IBAN ngẫu nhiên nhưng hợp lệ cho các mục đích thử nghiệm. Các tính năng chính bao gồm:
Trình tạo tạo ra các IBAN bằng cách:
Trình xác thực IBAN kiểm tra tính toàn vẹn cấu trúc của các IBAN do người dùng nhập vào. Các tính năng chính bao gồm:
Trình xác thực thực hiện nhiều kiểm tra:
Công cụ Tạo và Xác thực IBAN phục vụ nhiều mục đích trong các lĩnh vực khác nhau:
Trong khi công cụ Tạo và Xác thực IBAN của chúng tôi cung cấp một trải nghiệm đơn giản cho các mục đích thử nghiệm, có một số phương pháp thay thế cần xem xét:
Công cụ của chúng tôi cầu nối khoảng cách giữa các giải pháp thay thế này bằng cách cung cấp một giao diện đơn giản, dễ tiếp cận cho cả việc tạo và xác thực mà không cần tích hợp kỹ thuật hay đăng ký trả phí.
IBAN (Số Tài Khoản Ngân Hàng Quốc Tế) là một hệ thống đánh số quốc tế tiêu chuẩn được phát triển để xác định các tài khoản ngân hàng qua biên giới quốc gia. Nó được thiết lập bởi Tổ chức Tiêu chuẩn Quốc tế (ISO) để tạo điều kiện cho các giao dịch quốc tế không có lỗi.
Trình tạo IBAN tạo ra các IBAN có cấu trúc hợp lệ vượt qua thuật toán kiểm tra MOD 97 như được quy định trong tiêu chuẩn ISO 13616. Mặc dù các IBAN được tạo ra là hợp lệ về mặt toán học, nhưng chúng là ngẫu nhiên và không liên kết với các tài khoản ngân hàng thực, làm cho chúng hoàn hảo cho việc thử nghiệm nhưng không cho các giao dịch thực tế.
Công cụ hiện tại hỗ trợ các định dạng IBAN cho Đức, Vương quốc Anh, Pháp, Tây Ban Nha, Ý, Hà Lan, Thụy Sĩ, Áo, Bỉ và Ba Lan. Những quốc gia này bao gồm các định dạng IBAN được sử dụng phổ biến nhất ở châu Âu.
Không. Các IBAN được tạo ra bởi trình tạo này là hợp lệ về mặt cấu trúc nhưng được tạo ra ngẫu nhiên. Chúng không được kết nối với các tài khoản ngân hàng thực và chỉ nên được sử dụng cho các mục đích thử nghiệm, giáo dục hoặc trình diễn.
Trình xác thực kiểm tra một số khía cạnh của IBAN:
Không. Mặc dù các IBAN thường được hiển thị với các khoảng trắng để dễ đọc (thường là theo nhóm bốn ký tự), nhưng các khoảng trắng sẽ bị bỏ qua trong quá trình xác thực. Công cụ của chúng tôi xử lý cả IBAN đã định dạng (có khoảng trắng) và IBAN không định dạng.
Không. Công cụ này hoạt động hoàn toàn trong trình duyệt của bạn. Không có dữ liệu IBAN nào được gửi đến bất kỳ máy chủ nào, lưu trữ hoặc chia sẻ với bên thứ ba. Dữ liệu của bạn vẫn riêng tư và an toàn.
Hiện tại, công cụ chỉ xác thực các IBAN từ các quốc gia được hỗ trợ được liệt kê trong danh sách thả xuống. Nếu bạn cần xác thực cho các quốc gia bổ sung, vui lòng cho chúng tôi biết thông qua biểu mẫu phản hồi.
Một IBAN có thể không vượt qua xác thực vì một số lý do:
Chúng tôi hoan nghênh phản hồi để cải thiện công cụ. Vui lòng sử dụng biểu mẫu phản hồi có thể truy cập qua liên kết ở dưới cùng của trang để báo cáo bất kỳ sự cố nào hoặc đề xuất các cải tiến.
Đối với các nhà phát triển quan tâm đến việc triển khai xác thực và tạo IBAN trong các ứng dụng của riêng họ, dưới đây là các ví dụ mã trong nhiều ngôn ngữ lập trình:
1function validateIban(iban) {
2 // Xóa khoảng trắng và chuyển đổi thành chữ hoa
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Kiểm tra định dạng cơ bản
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Di chuyển bốn ký tự đầu tiên đến cuối
11 const rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
12 const converted = rearranged.split('').map(char => {
13 if (/[A-Z]/.test(char)) {
14 return (char.charCodeAt(0) - 55).toString();
15 }
16 return char;
17 }).join('');
18
19 // Tính toán mod 97
20 let remainder = 0;
21 for (let i = 0; i < converted.length; i++) {
22 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
23 }
24
25 return remainder === 1;
26}
27
28// Ví dụ sử dụng
29console.log(validateIban('DE89 3704 0044 0532 0130 00')); // true
30console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // true
31console.log(validateIban('DE89 3704 0044 0532 0130 01')); // false (chữ số kiểm tra không hợp lệ)
32
1def validate_iban(iban):
2 # Xóa khoảng trắng và chuyển đổi thành chữ hoa
3 iban = iban.replace(' ', '').upper()
4
5 # Kiểm tra định dạng cơ bản
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Di chuyển bốn ký tự đầu tiên đến cuối
10 rearranged = iban[4:] + iban[:4]
11
12 # Chuyển đổi chữ cái thành số (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 # Kiểm tra xem mod 97 có bằng 1 không
21 return int(converted) % 97 == 1
22
23# Ví dụ sử dụng
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 (chữ số kiểm tra không hợp lệ)
27
1public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Xóa khoảng trắng và chuyển đổi thành chữ hoa
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Kiểm tra định dạng cơ bản
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Di chuyển bốn ký tự đầu tiên đến cuối
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Chuyển đổi chữ cái thành số
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 // Tính toán 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 // Thêm nhiều quốc gia nếu cần
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Mã quốc gia ${countryCode} không được hỗ trợ`);
11 }
12
13 // Tạo BBAN ngẫu nhiên dựa trên định dạng quốc gia
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 // Tạo các ký tự số
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Tạo các ký tự chữ cái
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 // Tạo các ký tự alphanumeric
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 // Tính toán các chữ số kiểm tra
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Tạo IBAN ban đầu với '00' là chữ số kiểm tra
55 const initialIban = countryCode + '00' + bban;
56
57 // Sắp xếp lại và chuyển đổi chữ cái thành số
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 // Tính toán 98 trừ 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// Ví dụ sử dụng
77console.log(generateIban('DE')); // Tạo ra một IBAN hợp lệ của Đức
78console.log(generateIban('GB')); // Tạo ra một IBAN hợp lệ của Vương quốc Anh
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 # Thêm nhiều quốc gia nếu cần
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Mã quốc gia {country_code} không được hỗ trợ")
14
15 # Tạo BBAN ngẫu nhiên dựa trên định dạng quốc gia
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': # Số
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Chữ cái
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alphanumeric
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Tính toán các chữ số kiểm tra
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 # Tạo chuỗi để tính toán chữ số kiểm tra
40 check_string = bban + country_code + '00'
41
42 # Chuyển đổi chữ cái thành số (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 # Tính toán 98 trừ mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Ví dụ sử dụng
57print(generate_iban('DE')) # Tạo ra một IBAN hợp lệ của Đức
58print(generate_iban('GB')) # Tạo ra một IBAN hợp lệ của Vương quốc Anh
59
Công cụ Tạo và Xác thực IBAN cung cấp một giải pháp đơn giản nhưng mạnh mẽ cho các mục đích thử nghiệm và giáo dục liên quan đến các định danh ngân hàng quốc tế. Bằng cách cung cấp cả khả năng tạo và xác thực trong một giao diện thân thiện với người dùng, nó loại bỏ nhu cầu về các cấu hình phức tạp hoặc tích hợp bên thứ ba.
Dù bạn đang phát triển các ứng dụng tài chính, kiểm tra các hệ thống thanh toán, hay học về các tiêu chuẩn ngân hàng quốc tế, công cụ này cung cấp một cách đơn giản để làm việc với IBAN. Việc xác thực toàn diện đảm bảo rằng tất cả các IBAN được tạo ra đều có cấu trúc hợp lệ và tuân thủ các tiêu chuẩn quốc tế.
Hãy thử tạo hoặc xác thực một IBAN ngay bây giờ để trải nghiệm khả năng của công cụ này!
Khám phá thêm các công cụ có thể hữu ích cho quy trình làm việc của bạn