🔐 مشفر ومفكك تشفير ROT13
تحويل النص باستخدام شفرة ROT13 ذاتية الانعكاس - مثالية لإخفاء المفسدات والتشويش الأساسي للنص
🎯 تخطيط أبجدية ROT13
يستبدل ROT13 كل حرف بالحرف الذي يليه بـ 13 موضعًا. بما أن هناك 26 حرفًا، فإن تطبيق ROT13 مرتين يعيد النص الأصلي.
🏛️ ما هو ROT13؟
ROT13 ("تدوير بـ 13 مكانًا") هو حالة خاصة من شفرة قيصر بإزاحة ثابتة قدرها 13. يستخدم على نطاق واسع في المنتديات عبر الإنترنت ومجموعات الأخبار لإخفاء المفسدات وحلول الألغاز والنكات.
شفرة تبديل بسيطة
يتم استبدال كل حرف بحرف آخر يبعد 13 موضعًا في الأبجدية.
ذاتية الانعكاس
طبق ROT13 مرتين لاستعادة النص الأصلي - نفس العملية للتشفير وفك التشفير.
تحافظ على حالة الأحرف
تبقى الأحرف الكبيرة كبيرة، وتبقى الأحرف الصغيرة صغيرة.
مدعومة على نطاق واسع
تستخدم عبر المنصات والمنتديات ومحررات النصوص للتشويش السريع.
⚙️ كيف تعمل
يتم استبدال كل حرف بالحرف الذي يليه بـ 13 موضعًا في الأبجدية. عند الوصول إلى النهاية، تلتف إلى البداية:
- A ↔ N, B ↔ O, C ↔ P, إلخ.
- تبقى الأرقام والرموز دون تغيير (ما لم يتم تمكين الخيار)
- الصيغة الرياضية: (x + 13) mod 26
- نفس العملية للتشفير وفك التشفير
🔐 الأمان والاستخدام
لا يوفر ROT13 أي أمان تشفيري ويمكن كسره بسهولة. ومع ذلك، فهو مثالي لـ: and is trivially broken. However, it's perfect for:
🎬 إخفاء المفسدات
منع القراءة العرضية لمفسدات الأفلام أو الكتب أو الألعاب في المنتديات.
📧 تشويش البريد الإلكتروني
إخفاء عناوين البريد الإلكتروني عن روبوتات البريد العشوائي على مواقع الويب.
🎓 تدريس علم التشفير
تقديم مفاهيم التشفير الأساسية للطلاب.
🎮 الألغاز والألعاب
إنشاء ألغاز كلمات وأحاجي بسيطة.
❓ أسئلة شائعة
💻 ROT13 بلغات برمجة مختلفة
Python
import codecs
# Method 1: Using codecs
text = "Hello World"
encoded = codecs.encode(text, 'rot13')
print(encoded) # Output: Uryyb Jbeyq
# Method 2: Manual implementation
def rot13(text):
result = []
for char in text:
if char.isalpha():
offset = 65 if char.isupper() else 97
result.append(chr((ord(char) - offset + 13) % 26 + offset))
else:
result.append(char)
return ''.join(result)
print(rot13("Hello World")) # Output: Uryyb Jbeyq
JavaScript
function rot13(str) {
return str.replace(/[a-zA-Z]/g, function(char) {
const code = char.charCodeAt(0);
const offset = code >= 65 && code <= 90 ? 65 : 97;
return String.fromCharCode((code - offset + 13) % 26 + offset);
});
}
console.log(rot13("Hello World")); // Output: Uryyb Jbeyq
PHP
<?php
// Method 1: Using str_rot13
$text = "Hello World";
$encoded = str_rot13($text);
echo $encoded; // Output: Uryyb Jbeyq
// Method 2: Manual implementation
function rot13_manual($str) {
$result = '';
for ($i = 0; $i < strlen($str); $i++) {
$char = $str[$i];
if (ctype_alpha($char)) {
$offset = ord(ctype_upper($char) ? 'A' : 'a');
$result .= chr((ord($char) - $offset + 13) % 26 + $offset);
} else {
$result .= $char;
}
}
return $result;
}
?>
Java
public class ROT13 {
public static String encode(String text) {
StringBuilder result = new StringBuilder();
for (char c : text.toCharArray()) {
if (Character.isLetter(c)) {
char offset = Character.isUpperCase(c) ? 'A' : 'a';
result.append((char) ((c - offset + 13) % 26 + offset));
} else {
result.append(c);
}
}
return result.toString();
}
public static void main(String[] args) {
System.out.println(encode("Hello World"));
// Output: Uryyb Jbeyq
}
}
C++
#include <iostream>
#include <string>
#include <cctype>
std::string rot13(const std::string& text) {
std::string result;
for (char c : text) {
if (std::isalpha(c)) {
char offset = std::isupper(c) ? 'A' : 'a';
result += (c - offset + 13) % 26 + offset;
} else {
result += c;
}
}
return result;
}
int main() {
std::cout << rot13("Hello World") << std::endl;
// Output: Uryyb Jbeyq
return 0;
}
سطر أوامر Linux/Unix
# Using tr command
echo "Hello World" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
# Output: Uryyb Jbeyq
# Decode (same command)
echo "Uryyb Jbeyq" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
# Output: Hello World
# Process a file
cat input.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m' > output.txt
📚 سياق تاريخي
أصبح ROT13 شائعًا في Usenet في الثمانينيات كوسيلة لإخفاء المحتوى الذي قد يكون مسيئًا. يوصف بأنه "المكافئ في Usenet لطباعة إجابة مقلوبة".
- نشأ في ثقافة الإنترنت المبكرة
- لا يزال يستخدم في المنتديات ولوحات المناقشة الحديثة
- مدمج في العديد من محررات النصوص (مثل Vim)
- قياسي في أدوات Unix
🔗 أدوات تشفير ذات صلة
🔄 شفرة قيصر
شفرة إزاحة كلاسيكية بقيم إزاحة قابلة للتخصيص (1-25). أكثر مرونة من ROT13.
🔀 شفرة أتباش
شفرة عبرية قديمة تعكس الأبجدية (A↔Z، B↔Y). طريقة أخرى ذاتية الانعكاس.
🔐 شفرة فيجينير
شفرة متعددة الأبجديات تستخدم التشفير القائم على الكلمات الرئيسية لمزيد من الأمان المتقدم.
📊 مشفر Base64
تحويل البيانات الثنائية إلى تمثيل نصي ASCII لنقل البيانات بشكل آمن.