用Delphi中的Vigenere密码编码消息?

时间:2014-11-08 06:51:16

标签: function delphi delphi-2010 vigenere

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

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

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

1 个答案:

答案 0 :(得分: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;