Цезарь Шифр: как поступить с персонажем, удаляющим информацию - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть вопрос, который просит зашифровать сообщение, используя модифицированную версию Цезаря Шифра. Уловка в том, что я должен использовать все 256 символов расширенной библиотеки ASCII. Эта часть довольно проста.

Однако, когда я запускал шифрование, длина сообщения изменилась. После отслеживания проблемы кажется, что если используется определенный сдвиг, некоторые из символов преобразуются в ASCII 127, который является символом для «удаления». Таким образом, он удаляет предыдущий символ, вместо добавления символа к сообщению.

Любые предложения о том, как обойти это, при сохранении целостности шифра?

Если это поможет Я могу написать решение либо в Python, либо в VBA.

Примечание: я также разместил это в Cryptography , и они предложили шестнадцатеричное представление, которое я рассматриваю в качестве альтернативы.

Редактировать:

Код в VBA:

bLength = 1
cText = vbNullString
fOffset = WorksheetFunction.RandBetween(-255, 255)

While bLength <= aLength

    dCharacter = vbNullString
    eCharacter = vbNullString

    dCharacter = Mid(Cells(2, 1), bLength, 1)

    If 0 > (Asc(dCharacter) + fOffset) Then
        eCharacter = Chr(Asc(dCharacter) + fOffset + 255)

    ElseIf 255 < (Asc(dCharacter) + fOffset) Then
        eCharacter = Chr(Asc(dCharacter) + fOffset - 255)

    Else
        eCharacter = Chr(Asc(dCharacter) + fOffset)

    End If

    cText = cText + eCharacter

    bLength = bLength + 1

Wend

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