4
Shifty XORyption
プログラムまたは関数(またはプログラム/関数のセット)を作成して、次の仕様でデータを暗号化および復号化します。 暗号化 各バイトを相互にXOR演算することにより、入力のXORハッシュを計算します。 入力のすべてのバイトをこのハッシュでXORします。 結果を4ビット左にシフトします。 XORハッシュの最初の4ビットで左側を埋め込みます。 XORハッシュの最後の4ビットを右側に埋め込みます。 例 与えられた入力:"G0lf"(0x47306C66) XORハッシュを計算します。 0x47 ^ 0x30 ^ 0x6C ^ 0x66 = 0x7D ハッシュごとにすべてのバイトをXORします。 0x3A4D111B 期待される結果(シフトとパッドの後): ()"s¤Ñ\x11½"0x73A4D111BD ルール プログラム/関数は、入力/出力が実際のバイトである限り、選択したゴルフ言語(文字列、バイト配列など)で意味のある任意のタイプの入出力を行うことができます。たとえば、16進文字列を出力することはできません。 暗号化と復号化は、個別のプログラム(スコアはそれらの合計サイズになります)または単一のプログラムに分離できます。単一のメソッドは、暗号化または復号化する必要があるかどうかの引数を取ることができます。 暗号化の入力は、少なくとも1バイトのサイズであると予想されます。 復号化のための入力は、少なくとも2バイトであると予想されます。 出力で非印刷バイトをエスケープする必要はありません。