function XorEnCode(S,P: string): string;
var
 i, j, LP, Blk, M,LS: Integer;
begin
 Result := '';
 LP := Length(P); LS := Length(S);
 if (LP = 0) or (LS = 0) then Exit;
 Blk := LS div LP;
 M := LS mod LP; //PassWord文字列の長さに満たない場合
 SetLength(Result,LS);
 for i := 1 to Blk do
  for j := 1 to LP do
   Result[(i-1)*LP+j] := Char( Ord(S[(i-1)*LP+j]) xor Ord(P[j]) );
 if M > 0 then
  for i := 1 to M do
   Result[Blk*LP+i] := Char( Ord(S[Blk*LP+i]) xor Ord(P[i]) );
end;
-------------------------------------------------------------------------
単に任意の文字列に対しXORをかけるだけなのでP(パスワード文字列)も任意の日本語で問題ないと
思うのだが XorEnCode( '諸星弾&友里アンヌ' , 'ウルトラ警備隊') などとやると2回繰り返した
場合元に戻らない。なんでじゃろ?