我希望通过将字母表中的每个字母指定为数字值来加密具有简单Vigenere密码的消息,例如A = 1; B = 2; .. Z = 26.问题是我不知道用哪个函数来识别字符串中的字符(因为它是一个必须编码的消息,带有空格),然后给它特定的数值。
接下来,该数字消息必须转换为二进制,这很容易,但是如何将该字符串的消息转换为整数(其他是StrToInt函数)?
我只需要知道Vigenere Cipher使用哪个函数。 *我还在上高中,所以我提前为使用错误的条款道歉。
答案 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;