Warum nicht nur die vorhandenen 4 Bytes mit weiteren 4 Bytes Nullen auffüllen? Oder wiederhole die ursprünglichen 4 Bytes. Zum Beispiel:
static byte[] Pad(byte[] input)
{
// Alternatively use Array.Resize
byte[] output = new byte[input.Length + 4];
Buffer.BlockCopy(input, 0, output, 0, input.Length);
return output;
}
static byte[] Repeat(byte[] input)
{
byte[] output = new byte[input.Length * 2];
Buffer.BlockCopy(input, 0, output, 0, input.Length);
Buffer.BlockCopy(input, 0, output, input.Length, input.Length);
return output;
}
Beide erfüllen Ihre ursprünglichen Kriterien, glaube ich ... aber ich vermute, Sie suchen etwas anderes. Wenn das der Fall ist, müssen Sie explizit angeben, was Sie brauchen.
EDIT: Wie ich in den Kommentaren gesagt habe, fügen Sie im Grunde keine echte Sicherheit hier - Padding wird das klarer machen, IMO. Auf der anderen Seite, wenn Sie tun wollen einige Sicherheit-durch-Obskurität, könnten Sie einen Zufallsgenerator, der Seeding ermöglicht, und verwenden Sie das als Ausgangspunkt. Zum Beispiel:
// Don't use this - see below. Just the concept...
int seed = BitConverter.ToInt32(input, 0); // TODO: Cope with endianness
Random rng = new Random(seed);
byte[] output = new byte[8];
Buffer.BlockCopy(input, 0, output, 0, 4);
for (int i = 4; i < 8; i++) {
output[i] = (byte) rng.Next(256);
}
Nun, der Grund, warum ich den Kommentar oben habe, ist, dass Sie wahrscheinlich einen Algorithmus benötigen, die nicht ändern zwischen Versionen von .NET gewährleistet ist. Finden Sie Code zu etwas wie dem Mersenne Twister, zum Beispiel.
Ich weiß nicht, ob ich den Punkt hier verpasse, aber das Beste, was zu tun wäre, wäre nur mit 4 leeren Bytes zu füllen? Es ist gültig und reproduzierbar. –
Viele Möglichkeiten, das zu tun .... einfach kopieren Sie es zweimal, pad mit 0s, kopieren und rückgängig machen, hash es, ... kann sogar die Reihenfolge mischen, so dass es nicht immer die letzten oder ersten 4 Bytes, die signifikant sind. – mpen
Ist der Code erforderlich, um auch auf Big-Endian-Systemen zu arbeiten? – CodesInChaos