Frage

habe ich ein Modul, das RSA die Daten verschlüsselt und übergibt an den C #. C # Bedürfnisse zu entschlüsseln, basierend auf dem öffentlichen Schlüssel (64 Bit codiert) und die übergebene Token.

Ich habe Token, 64 Bit öffentlichen Schlüssel codiert sind, können einige mir helfen, mit der Probe erhalten, um loszulegen. Alles was ich weiß von Java Ende ist, es verwendet. Ich habe das Ergebnis von Java Ende und brauchen bekam einen Parser in C # zu schreiben, diese zu entschlüsseln. Ich erhalte sowohl öffentliche Schlüssel und Token als String-Wert.

    Cipher cipher = Cipher.getInstance(ALGORITHM); //Algorithm = "RSA"
    cipher.init(Cipher.DECRYPT_MODE, key);

Danke

War es hilfreich?

Lösung

Um loszulegen, müssen Sie die privat Taste, um die Nachricht zu entschlüsseln. Mit „öffentlichen Schlüssel (64 Bit codiert)“, vermute ich, was Sie wirklich haben, ist eine Base-64-codierte Zertifikat, mit Kopfzeile, der sagt „----- BEGIN CERTIFICATE -----“ und ein Fußzeile, die "----- END CERTIFICATE -----", sagt.

Wenn das stimmt, werden Sie den privaten Schlüssel finden müssen. Dies wird manchmal in einer PKCS # 12-Format-Datei gespeichert ist, mit einer „P12" oder“ .pfx“-Erweiterung. Sie werden ein Passwort benötigen, den privaten Schlüssel zugreifen, wenn es in einer solchen Datei gespeichert wird.

Alternativ OpenSSL und andere Dienstprogramme verwenden private Schlüssel-Dateien, die Base-64-codiert oder binär sein kann. Diese haben eine Vielzahl von Erweiterungen und kann oder auch nicht durch ein Passwort geschützt. Wenn die Datei, dass Sie eine Kopfzeile hat „----- BEGIN RSA PRIVATE KEY -----“ oder „----- PRIVATE KEY BEGIN -----“, die eigentlich der private Schlüssel .

Schließlich kann Windows speichern private Schlüssel in seinem internen Schlüsselspeicher.

Wenn Sie den Speicherort des privaten Schlüssels klären, aktualisieren Sie bitte Ihre Frage ein.


Wenn der private Schlüssel auf der Java-Seite verwendet wird, kann es ein Versuch sein, eine digitale Signatur durchzuführen. Während alle mehrere Java-Provider ich produzieren korrekte Ergebnisse getestet haben, wenn (ab) auf diese Weise verwendet werden, wenn Sie eine Signatur tun, sollten die Signature Klasse verwendet werden. Der C # -Code sollte auch eine Signatur-Objekt zu „verifizieren“ die Signatur verwenden.

Die Verschlüsselung wird mit dem privaten Schlüssel durchgeführt. Da die öffentliche Schlüssel Öffentlichkeit jeder kann die Nachricht entschlüsseln; das heißt, die Nachricht nicht vertraulich. Öffentliche Schlüssel werden von den Empfängern verwendet, um signierte Nachrichten zu überprüfen.

Andere Tipps

Überprüfen Sie den Code aus.

public static string Decrypt(string inputText)
      {
        RijndaelManaged rijndaelCipher = new RijndaelManaged();
        byte[] encryptedData = Convert.FromBase64String(inputText.Replace(" ","+"));
        PasswordDeriveBytes secretKey = new PasswordDeriveBytes(ENCRYPTION_KEY, SALT);

        using (ICryptoTransform decryptor = rijndaelCipher.CreateDecryptor(secretKey.GetBytes(32), secretKey.GetBytes(16)))
        {
          using (MemoryStream memoryStream = new MemoryStream(encryptedData))
          {
            using (CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read))
            {
              byte[] plainText = new byte[encryptedData.Length];
              int decryptedCount = cryptoStream.Read(plainText, 0, plainText.Length);
              return Encoding.Unicode.GetString(plainText, 0, decryptedCount);
            }
          }
        }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top