Immer wenn ich versuche, MD5 auf einem Windows XP-Rechner zu verwenden, auf dem FIPS aktiviert ist, erhalte ich eine System.InvalidOperationException
.
Gibt es einen alternativen Algorithmus, den ich anstelle von MD5 bei FIPS verwenden sollte?
Immer wenn ich versuche, MD5 auf einem Windows XP-Rechner zu verwenden, auf dem FIPS aktiviert ist, erhalte ich eine System.InvalidOperationException
.
Gibt es einen alternativen Algorithmus, den ich anstelle von MD5 bei FIPS verwenden sollte?
Wenn Sie die FIPS-Konformität in den Windows-Sicherheitsrichtlinieneinstellungen erzwingen, erklären Sie, dass Sie nur FIPS-zertifizierte Verschlüsselungs- und Hash-Algorithmen verwenden werden. MD5 ist no einen dieser zugelassenen Hash-Algorithmen, und deshalb wird die Ausnahme ausgelöst.
Die Abhilfe ist einfach: Wählen Sie einen anderen Hashing-Algorithmus. Das .NET Framework bietet viele andere Optionen in der System.Security.Cryptography
Namensraum . Wählen Sie einen Algorithmus aus der SHA-Familie. Ich kann mir keinen Grund vorstellen, warum Sie MD5 im Gegensatz zu einer der Alternativen verwenden sollten.
Sie können MD5Digest aus Org.BouncyCastle.Crypto.Digests verwenden
MD5Digest hash = new MD5Digest();
public byte[] Hash(byte[] input)
{
hash.BlockUpdate(input, 0, input.Length);
byte[] result = new byte[hash.GetDigestSize()];
hash.DoFinal(result, 0);
return result;
}
public string Hash(string input)
{
var data = System.Text.Encoding.Unicode.GetBytes(input);
hash.BlockUpdate(data, 0, data.Length);
byte[] result = new byte[hash.GetDigestSize()];
hash.DoFinal(result, 0);
return Hex.ToHexString(result).ToUpper();
}
Für kryptographisch Hashing-Zwecke können Sie SHA1, SHA2 oder SHA3 verwenden, auf Wunsch mit HMAC.
Wenn Sie MD5 verwenden möchten für nicht kryptografisch dann ist das in Ordnung, aber Sie müssen Ihre eigene Implementierung bereitstellen. Beispiele hierfür sind:
Der letzte Punkt ist fragwürdig; die Validierung von SHA1/SHA2-Hashes wäre besser, und es hängt von der Validierung ab (z. B. ob sie während der Übertragung beschädigt wurde oder ob es sich um eine Paketauthentifizierung handelt).
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.