0

我想通过为字母表中的每个字母分配一个数值,例如 A=1; 来使用简单的 Vigenere 密码来加密消息。B= 2;..Z= 26. 问题是我不知道使用哪个函数来识别字符串中的字符(因为它是必须编码的消息,带有空格),然后给它一个特定的数值。

接下来,必须将该数字消息转换为二进制,这很容易,但是如何将那个字符串消息转换为整数(除 StrToInt 函数之外)?

我只需要知道 Vigenere Cipher 使用哪个函数。*我还在上高中,所以我提前为使用错误的术语道歉。

4

1 回答 1

0

您可以使用 case 语句来执行编码。

function EncodedChar(C: Char): Byte;
begin
  case C of
  'A'..'Z':
    Result := 1 + ord(C) - ord('A');
  ' ':
    Result := ???;
  ',':
    Result := ???;
  ... // more cases here
  else
    raise ECannotEncodeThisCharacter.Create(...);
  end;
end;

for循环编码一个字符串:

function EncodedString(const S: string): TBytes;
var
  i: Integer;
begin
  SetLength(Result, Length(S));
  for i := 1 to Length(S) do begin
    // dynamic arrays are 0-based, strings are 1-based, go figure!
    Result[i-1] := EncodedChar(S[i]);
  end;
end;
于 2014-11-08T11:14:14.630 回答