Как реализовать Cycle Walking Method в FPE, чтобы получить длину выходной зашифрованной строки, равную длине входной строки? - PullRequest
0 голосов
/ 08 февраля 2019

В соответствии с концепцией метода циклической прогулки в Шифровании с сохранением формата (FPE) следующим образом. Скажем, M - это желаемая длина строки вывода, X - обычный текст

AES(X)=Y
if (Y>M) {
    AES(X)
}

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

main()
{
    String strToEncrypt = "012345678";
    final String strPssword = "QWERTYUIOPASDFGH";
    AES.setKey(strPssword);

    for(int i=0;i<20;i++)
        {
          AES.encrypt(strToEncrypt.trim());
          System.out.println("String to Encrypt: " + strToEncrypt); 
          System.out.println("Encrypted: " + AES.getEncryptedString());
          strToEncrypt = AES.getEncryptedString();
        }
}

Результат, который я получил:

String to Encrypt: 012345678
Encrypted: /a+WAzyVsLRkWXtQu1RFrw==

String to Encrypt: /a+WAzyVsLRkWXtQu1RFrw==
Encrypted: K2DVyvglFSGncoTvl7al00cPzKdRyGkW/YTOTqXp3sk=

String to Encrypt: K2DVyvglFSGncoTvl7al00cPzKdRyGkW/YTOTqXp3sk=
Encrypted: I7CBulv5XdEaSX55wFlXFHgtmwFZO6GZvmZ+OrH8jSRSga7NhdG6bYXEwR90YzSI

Но я пытаюсь найти то, что после некоторого количества итераций длина выходной зашифрованной строки должна быть равнадлина входной строки "012345678"

...