2012-05-22 6 views
0

Я хочу зашифровать и расшифровать SMS с помощью J2ME, я попробовал алгоритм TEA, но он генерирует длинный зашифрованный текст. Есть ли какой-либо другой легкий алгоритм, который генерирует зашифрованный текст с той же длиной, что и исходный текст?Шифрование/дешифрование SMS в J2ME

ответ

1

Проверить поток chiphers (как RC4). Это не увеличит потребность в пространстве. Шифрованные данные имеют одинаковую длину, чем простые данные.

Если вы хотите зашифровать 7-битное текстовое сообщение, может быть 160 символов. Тогда это не помогает. Но если максимальная длина обычного текста составляет 140 байт, то они могут использоваться.

+0

я использую RC4 с Cipher.getInstance (» RC4 "), но он увеличивает длину данных до дубликата, 160 символов составляет 320 символов. –

+0

RC4 не поддерживается в J2ME :( –

+0

@Dahmad Boutfounast: вы всегда можете написать его для J2ME, это просто. Но у RC4 есть небольшая слабость. Рассмотрим некоторые другие чипы потоков, если уровень безопасности должен быть высоким. – SKi

1

Шифрование потока работает для этого, но даже шифрование потока работает только с битами. Поэтому вам нужно сжать текст, чтобы он поместился как можно меньше бит. Использование дефляции будет работать в большинстве случаев, но может потерпеть неудачу на более короткие сообщения или сообщения, содержащие несжатые данные.

Другим способом является сжатие вашего сообщения как можно меньше бит. Например. номера 0..9 - ASCII 30h - 39h. Но они также могут храниться в двоичной форме 0000 до 1001 двоичных. Упакованный BCD будет хорошим вариантом для кодирования чисел. Mathematic majors сразу увидели бы, что вы можете использовать группы и разделение для минимальных требований к хранению, но это может добавить довольно много ресурсов ЦП (неважно, насколько интересно разрабатывать это решение). Когда у вас есть кратчайшее двоичное представление, вы шифруете шифр потока.

Итак, теперь у вас есть это хорошее короткое двоичное представление. Надеюсь, он войдет в SMS-сообщение. Если нет, вам нужно закодировать результирующее двоичное представление.

В принципе, то, что вам нужно сделать, это:

send = Send(EncodeBin(Encrypt(EncodeTxt(plain)))) 

затем

plain = DecodeTxt(Decrypt(DecodeBin(Receive(send)))) 

Но пусть это не остановит вас :)

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