Wie verwenden von c# zu entschlüsseln, MD5-hash, verschlüsselt über RSA1024
Ich versuche zum überprüfen der Integrität einer Datei bei der Arbeit und haben eine harte Zeit von es. Ich bin nicht sehr versiert mit Verschlüsselung und hashing, so mit mir tragen.
Ich habe einige Dateien mit einem MD5-hash das Hotel liegt am Ende von Ihnen. Ich habe code geschrieben, greifen die bytes, die ich denke, sind die hash-und Sie gesehen gleichmäßig zu 128 bytes lang. In der Datei, kurz vor dem hash, ist das Stichwort "RSA1024", das habe ich verstanden, wird der hash verschlüsselt mit RSA-1024.
Habe ich, was ich weiß, ist der RSA-Schlüssel in eine Datei und das Auslesen der bytes (immer 258 bytes lang). Ich habe gesehen, viele tutorials, die die Nutzung FromXmlString() to pull in den Schlüssel, aber dieser RSA-Schlüssel nicht generiert wurde, mithilfe der .net framework, und nicht in einem XML-format.
Ich geschrieben habe die folgende Methode zum entschlüsseln des hash-Daten mit dem Schlüssel, und es wirft diese Fehlermeldung beim ausführen ImportCspBlob() - System.Sicherheit.Die Kryptographie.CryptographicException: Bad Version der Anbieter.
Irgendwelche Ideen?
public byte[] DecryptRSA(byte[] encryptedData, byte[] keyData)
{
CspParameters param = new CspParameters();
param.Flags = CspProviderFlags.UseExistingKey;
RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(param);
rsaProvider.ImportCspBlob(keyData);
byte[] decryptedData = rsaProvider.Decrypt(encryptedData, false);
return decryptedData;
}
Grundlegende Algorithmus
Es mag seltsam klingen zu wollen "entschlüsseln einen MD5-hash", und vor allem, wenn man sagt, dass Sie wollen "entschlüsseln mit public-key" -. Aber das ist, wie digitale Signaturen funktionieren. Mit RSA können Sie:
- verschlüsseln mit privatem Schlüssel
- entschlüsseln mit dem öffentlichen Schlüssel
Den message digest ist verschlüsselt mit dem privaten Schlüssel, und kann nur dann entschlüsselt werden, die mit der öffentlichen - Taste. Auf diese Weise wissen Sie, dass nur die person mit dem privaten Schlüssel haben könnte, hat die Nachricht signiert.
- Nur damit Sie wissen, Sie können nicht "unhash" oder "entschlüsseln" ein hash-code. Hashing ist ein one-way-operation. Das sagte, ich glaube, Ihre Frage ist eigentlich über die Entschlüsselung und das Wort hash wird nur missbraucht! Nur ein fyi
- Um zu klären, - Die Datei Hashen mit MD5, dann sind das MD5-Ergebnis war verschlüsselt mit RSA1024 und das Ergebnis an die Datei angehängt?
- Sie nicht entschlüsseln können/dehash MD5. MD5-Algorithmus one-way.
- Jede chance, die Sie sind die gleiche person wie dieser Fragesteller?
- Nein, dass ist nicht mir.
- Sorry, Kevek. Vielleicht war ich nicht klar genug. Ich will nicht zum entschlüsseln des Hash, das verstehe ich nicht. Ich möchte zu entschlüsseln und das Ergebnis der Verschlüsselung des hash, das ist, was gespeichert wird, an das Ende der Datei.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihr Schlüssel ist wahrscheinlich nicht eine CSP-Typ-Schlüssel (es ist wahrscheinlich DER-codiert). Sie können Sie entschlüsseln mithilfe Hüpfburg mit der DER Schlüssel so:
EDIT: um die Bewältigung von GregS Szenario, dass es eine Signatur überprüfen, Betrieb
Wenn Sie versuchen, um zu überprüfen, die eine Signatur benötigen Sie ein Zertifikat zum überprüfen einer Nachricht, der original-text der Nachricht, und die vorhandenen message-Signatur verglichen werden.
Was Sie tun ist, übergeben Sie in der original-text der Nachricht (ohne Signatur), die bytes der Nachricht, die Signatur und der Pfad zum Zertifikat, das Sie verwenden, um sicherzustellen, die übergebene Signatur.
Dann werden Sie Hashwert der ursprünglichen Nachricht und Vergleiche das Ergebnis mit der übergebenen Signatur.
Hier ist etwas code zur Veranschaulichung:
MD5 one-way-hash. Aber Sie könnten check-out-hashing-Algorithmus. Es gibt einige Möglichkeiten, diese zu brechen hash, nur etwas Forschung zu tun 😉