قم بإنشاء أرقام IBAN عشوائية متوافقة مع التنسيق أو تحقق من الأرقام الموجودة باستخدام أداتنا البسيطة. مثالي لاختبار التطبيقات المالية، وبرامج البنوك، والأغراض التعليمية.
أداة توليد والتحقق من رقم الحساب المصرفي الدولي (IBAN) هي أداة شاملة مصممة لأغراض الاختبار والتحقق في التطبيقات المالية، وبرامج البنوك، والسياقات التعليمية. تقدم هذه التطبيق السهل الاستخدام ميزتين أساسيتين: توليد أرقام IBAN عشوائية ولكن متوافقة مع الصيغة، والتحقق من سلامة الهيكل لأرقام IBAN المدخلة من قبل المستخدمين. سواء كنت مطورًا تختبر برامج مالية، أو متخصصًا في ضمان الجودة يتحقق من تطبيقات البنوك، أو معلمًا يشرح معايير البنوك الدولية، توفر لك هذه الأداة حلاً بسيطًا دون الحاجة إلى تكوينات معقدة أو تكاملات مع أطراف ثالثة.
تُستخدم أرقام IBAN (أرقام الحساب المصرفي الدولي) كمعرفات حساب موحدة تُستخدم دوليًا لتسهيل المعاملات عبر الحدود وتقليل الأخطاء في التحويلات المالية الدولية. يتكون كل IBAN من رمز بلد، وأرقام تحقق، ورقم حساب مصرفي أساسي (BBAN) يتبع تنسيقات محددة حسب البلد. تدعم أداتنا تنسيقات متعددة للدول وتضمن أن جميع أرقام IBAN المولدة تمر بخوارزمية التحقق MOD 97 المحددة في معيار ISO 13616.
يتكون IBAN من ما يصل إلى 34 حرفًا أبجديًا رقميًا، على الرغم من أن الطول الدقيق يختلف حسب البلد. يتضمن الهيكل القياسي:
على سبيل المثال، يتبع IBAN الألماني الهيكل DE2!n8!n10!n
حيث:
DE
هو رمز البلد2!n
يمثل رقمين رقميين للتحقق8!n
يمثل رمز بنك مكون من ثمانية أرقام10!n
يمثل رقم حساب مكون من عشرة أرقامتختلف البلدان في تنسيقات 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 خوارزمية MOD 97 كما هو محدد في معيار ISO 7064. إليك كيف تعمل:
رياضيًا، يتم تمثيل ذلك كالتالي:
تقوم أداة التحقق لدينا بتنفيذ هذه الخوارزمية للتحقق من سلامة الهيكل لأي IBAN يتم إدخاله من قبل المستخدمين.
يقوم مولد IBAN بإنشاء أرقام IBAN عشوائية ولكن صالحة لأغراض الاختبار. تشمل الميزات الرئيسية:
يقوم المولد بإنشاء أرقام IBAN من خلال:
يتحقق Validator IBAN من سلامة الهيكل لأرقام IBAN المدخلة من قبل المستخدمين. تشمل الميزات الرئيسية:
يقوم Validator بإجراء عدة فحوصات:
تخدم أداة توليد والتحقق من IBAN عدة أغراض عبر مجالات مختلفة:
بينما توفر أداة توليد والتحقق من IBAN تجربة مبسطة لأغراض الاختبار، هناك طرق بديلة يجب النظر فيها:
تسد أداتنا الفجوة بين هذه البدائل من خلال توفير واجهة بسيطة وسهلة الوصول لكل من التوليد والتحقق دون الحاجة إلى تكامل تقني أو اشتراكات مدفوعة.
IBAN (رقم الحساب المصرفي الدولي) هو نظام ترقيم دولي موحد تم تطويره لتحديد الحسابات المصرفية عبر الحدود الوطنية. تم تأسيسه بواسطة المنظمة الدولية للمعايير (ISO) لتسهيل المعاملات الدولية الخالية من الأخطاء.
يقوم مولد IBAN بإنشاء أرقام IBAN صالحة هيكليًا والتي تمر بخوارزمية التحقق MOD 97 كما هو محدد في معيار ISO 13616. بينما تكون أرقام IBAN المولدة صالحة رياضيًا، إلا أنها عشوائية وليست مرتبطة بحسابات مصرفية فعلية، مما يجعلها مثالية للاختبار ولكن ليس للمعاملات الحقيقية.
تدعم الأداة حاليًا تنسيقات IBAN لألمانيا، المملكة المتحدة، فرنسا، إسبانيا، إيطاليا، هولندا، سويسرا، النمسا، بلجيكا، وبولندا. تغطي هذه الدول أكثر تنسيقات IBAN استخدامًا في أوروبا.
لا. الأرقام التي ينشئها هذا المولد صالحة هيكليًا ولكنها عشوائية. إنها غير مرتبطة بحسابات مصرفية حقيقية ويجب استخدامها فقط لأغراض الاختبار أو التعليمية أو العرض.
يتحقق المولد من عدة جوانب لرقم IBAN:
لا. بينما يتم عرض أرقام IBAN غالبًا مع مسافات لتحسين القراءة (عادةً في مجموعات من أربعة أحرف)، يتم تجاهل المسافات أثناء التحقق. تتعامل أداتنا مع كل من IBANs المنسقة وغير المنسقة.
لا. تعمل هذه الأداة بالكامل في متصفحك. لا يتم إرسال أي بيانات IBAN إلى أي خادم، ولا يتم تخزينها، أو مشاركتها مع أطراف ثالثة. تظل بياناتك خاصة وآمنة.
حاليًا، تتحقق الأداة فقط من IBANs من البلدان المدعومة المدرجة في القائمة المنسدلة. إذا كنت بحاجة إلى التحقق من دول إضافية، يرجى إخبارنا من خلال نموذج الملاحظات.
قد يفشل 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 // إعادة ترتيب وتحويل الأحرف إلى أرقام
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 // حساب 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// مثال على الاستخدام
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 (أرقام تحقق غير صالحة)
32
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 # التحقق مما إذا كان mod 97 يساوي 1
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 // حساب 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 أولي مع '00' كأرقام تحقق
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 حلاً بسيطًا ولكنه قوي لأغراض الاختبار والتعليم المتعلقة بالمعرفات المصرفية الدولية. من خلال تقديم كل من قدرات التوليد والتحقق في واجهة سهلة الاستخدام، فإنها تلغي الحاجة إلى تكوينات معقدة أو تكاملات مع أطراف ثالثة.
سواء كنت تطور تطبيقات مالية، أو تختبر أنظمة الدفع، أو تتعلم حول معايير البنوك الدولية، تقدم لك هذه الأداة طريقة مباشرة للعمل مع أرقام IBAN. يضمن التحقق الشامل أن جميع أرقام IBAN المولدة سليمة هيكليًا ومتوافقة مع المعايير الدولية.
جرب توليد أو التحقق من IBAN الآن لتجربة قدرات الأداة بنفسك!
اكتشف المزيد من الأدوات التي قد تكون مفيدة لسير عملك