Расшифровка разных ключей дает одинаковый результат - PullRequest
0 голосов
/ 09 июля 2010

Я видел такое поведение сегодня при работе с Java EE Framework.Каждый раз, когда я получаю int ID с сервера, этот ID шифруется + кодируется в базе 64, и зашифрованная строка отправляется обратно.Каждый запрос дает другой зашифрованный ключ.Странное поведение заключается в том, что если я сделаю 5 запросов, зашифрованный текст, полученный после первого запроса, все еще будет работать (расшифровка его даст мне правильный int ID).Шифрование работает примерно так:

   request 1 for (same) ID => 
     int ID + salt + ?(assume unique timestamp) = encrypted text 1 => encoded result 1
   request 2 for (same) ID => 
     int ID + salt + ?(assume unique timestamp) = encrypted text 2 => encoded result 2

Мой вопрос: без кеширования чего-либо (проверьте это на двух разных станциях, разные строки шифрования для одного и того же номера будут расшифрованы на одном и том же номере на обеих станциях), как этоповедение возможно в том смысле, что как алгоритм дешифрования узнает, как сопоставить множество 12-символьных зашифрованных строк с одними и теми же исходными данными?Кроме того, существует ли ограничение на количество зашифрованных строк, которые можно отобразить на одни и те же данные?

Спасибо!

PSThe Framework с открытым исходным кодом использует метод javax.crypto.Cipher.doFinal как для шифрования, так и для дешифрования.

1 Ответ

1 голос
/ 12 июля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...