2015-01-13 2 views
0

Есть ли способ шифрования текста и вывода, который является общим английским/испанским текстом или аналогичным, и иметь возможность расшифровать его тоже?Зашифрованный текст, например, текст на английском языке

Я пытался при шифровании Цезарь

http://en.wikipedia.org/wiki/Caesar_cipher

Plaintext: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG  
Ciphertext: QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD 

, но я хотел бы выход, например:

Plaintext: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG  
Ciphertext: RADIO LIBRARY MAKE TABLE TIME ON KITCHEN DAY OF 

ответ

0

уверен, что это возможно с помощью специально созданного один раз колодки. XOR - открытый текст и целевой зашифрованный текст, и вы получите ключ. key.length = max(pt.length, ct.length) Это, очевидно, работает только для одной пары PT, CT.

0

Это возможное решение. Могут быть проблемы с производительностью с использованием английского или испанского словаря в массиве, но вам могут потребоваться только общие слова.

function wordSwap(String str){ 
    var dictionary = Array(a, the, brown, fox, over, ...); 
    var swapDictionary = randomizeArray(dictionary); 
    var newStr = ""; 

    str = str.split(' '); 
    foreach(str as s){ 
     var idx = dictionary.indexOf(s); 
     newStr += swapDictionary[idx]+" "; 
    } 

    return newStr; 
} 
0

Ответ Джека довольно прост и хорошо соответствует вашему Цезарскому шифру, но это не очень безопасно. Это всего лишь шифр замещения с гораздо большим «алфавитом». Как и ваш Цезарский шифр, это означает, что его можно сломать с помощью частотного анализа. Слова THE и AND довольно распространены на английском языке. ÉL и LA чрезвычайно распространены на испанском языке. Поэтому я ищу «слова», которые часто появляются в шифрованном тексте и предполагают, что они сопоставляются с общепринятыми словами на моем целевом языке. Я продолжаю делать догадки, основанные на частоте и контексте, пока не выработаю части сообщения (или даже целое сообщение). Если я знаю, что это, вероятно, о пуделях, и я вижу, что в сообщении часто появляется сообщение SUNRISE, возможно, я полагаю, что SUNRISE - пудель, и я работаю оттуда.

Мне нравится быть простым, но мне это не нравится, если я хочу безопасности.

Мы можем разработать схему шифрования, сохраняющую формат, что вы здесь хотите, но я не знаком с тем, который предназначен для работы на таком большом домене (это область, которую вы могли бы исследовать, хотя, или спросите у http://crypto.stackexchange.com, что было бы лучше для этого вопроса). Преимущество шифрования, сохраняющего формат, заключается в том, что результирующее сообщение должно быть того же размера, что и исходное сообщение.

Но вот еще одно решение, которое мы могли бы использовать, что является своего рода кодировкой base-N, где N - размер нашего словаря.

Начните с упорядоченного словаря и вашего открытого текста. Посмотрите каждое слово в словаре и обратите внимание на индекс. Используйте эти индексы для создания нового сообщения, в котором размер слова основан на количестве элементов в словаре. Для простоты вы можете объединить это число до 64 бит за семестр, но вы также можете сделать каждый термин произвольным количеством бит, если вы хотите сделать больше бит математики и позволить данным разливать границы байтов. Шифруйте это сообщение, как вам нравится (т. Е. AES).

Теперь нам нужно закодировать это на словах. Для значений, меньших, чем N-1, мы просто выбираем это слово из словаря. Для чисел, равных N-1 или более, вы можете использовать последнее слово в словаре как маркер, а затем добавить к нему следующее слово. Поэтому скажем, что у нас был словарь с 1000 словами (0..999) от А до ЗЫРЯНА. Мы могли кодировать 999 как ZYRIAN A и 1000 как ZYRIAN AARDVARK. Если нам нужно кодировать большие числа, мы можем цеплять. Например, ZYRIAN ZYRIAN A - 1998. Разумеется, вы получите лучшие размеры вывода, если вы снова разделите данные на границы байтов, значение не будет больше 2 * N.

Ключом здесь является то, что мы нарушили проблему на две проблемы: транскодер, который позволяет нам конвертировать между произвольными словами и числами и шифрование, которые мы можем использовать с использованием любой стандартной схемы шифрования.

Смежные вопросы