RSA-Verschlüsselte Daten von PHP => .net

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Linkai.

    RSA-Verschlüsselte Daten von PHP => .net

    Sehr geehrte VB-Paradisvögel,

    ich hab mal wieder ein kleines Problemchen.
    Da ich derzeit keine Projekte verfolge und lediglich bei einigen Internen Programmen Bugfixxes machen muss, wollte ich mich mal etwas näher mit der RSA-Verschlüsslung befassen.
    Zum Thema gibt es sehr gute Videos für Einsteiger auf Youtube von der FH - Heidelberg.

    Naja, zurück zum Thema:
    Ich hab mir ein PHP-Script gebastelt mithilfe der phpseclib.

    PHP-Quellcode

    1. <?php
    2. include('Crypt/RSA.php');
    3. $rsa = new Crypt_RSA();
    4. $rsa->loadKey('<RSAKeyValue><Modulus>u29PFkiffQ8QWf11Qtun3duYsOT7jOUUBG3xmPKvgHZGS/7vWpxCP2q+vcaDEBAMzKaj+Vh5ancwR2EzhhyPU59b+CU8sheJVIVRitNcrv295LDMcjGYOOBkRRCNQ69fWs25naFP/+mTytqAt9dK96bLmF/GyVBqBtJZcg0GxlSfW8xH1vV0GyNKu0DggzJX2rbH6eZz0uAWiW91deTEduk8DtxO8Mpl/DgJPdlf8N/qY4+unU15oswu581uEfExtoJxE6BkCi6zQOwLSHcOPHMeEUmWFFbft3xeolWv2F0GjZJFtLyYIsi3LTkeg9k5eCAF11eySYx6yBUKvPSfsKPo3GMhvQLNjL80u7uYb3F/1SOavGhdEniah6JFIbhfctkkZzO7Sb6BjqBUk/XPiLbJR6E0pCsOWzw3/AWO67LL+U4juMwqDSHQc+9nakLYdPGHU0jtPRNyRxNLdH5D29lrbJKdxQltnmaWa7TqyqGb7sGycE6d9C6PN3F3bbxqzRgAY52zWsLESlDFdvQqAnp2BVoaj2B+YiWa6HeudeM8/hiu14g5BAuhImmqeMdPRCGGHfWMEG3FfXPnCL5fvOZJdcUis2p0jQyLD3vKfY8iRZ6e51xAOT0Qy27qKj6roPPqhG1Ggso9s7cMzSimEU+r91/IdTKqjMAeCFS/jxk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>'); // public key
    5. $plaintext = 'Test';
    6. $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_OAEP);
    7. $ciphertext = $rsa->encrypt($plaintext);
    8. echo $ciphertext;
    9. ?>

    Es funktioniert, was rausgeworfen wird, ist verschlüsselt und nicht mehr lesbar

    Den Private sowie den Publickey habe ich in VB-Generieren lassen:

    VB.NET-Quellcode

    1. Function Create_RSA_Key(Optional ByVal keysize As Integer = 2048) As RSA_key_Struct
    2. Dim RSA_key As RSA_key_Struct 'RSA_key als RSA_key_Struct Struktur definieren
    3. Dim RSA_Crypto As New RSACryptoServiceProvider(keysize) 'Zufällige Schlüssel generieren
    4. RSA_key.open_key = RSA_Crypto.ToXmlString(False) 'Öffentlichen Schlüssel schreiben
    5. RSA_key.privat_key = RSA_Crypto.ToXmlString(True) 'Privaten Schlüssel schreiben
    6. RSA_Crypto.Dispose() 'Ressourcen freigeben
    7. Return RSA_key 'Schlüssel übergeben
    8. End Function

    Schlüsselgröße allerdings das doppelte vom Standard: 4096

    Nun lade ich mir den Verschlüsselten String via Webclient und Downloadstring zum Test mal runter und versuche diesen zu Entschlüsseln:

    VB.NET-Quellcode

    1. Function RSA_ent(ByVal DATA As String, ByVal Privatekey_Xml As String, Optional ByVal keysize As Integer = 2048) As String
    2. Dim RSA_Crypto_ent As New RSACryptoServiceProvider(keysize) 'RSA-service wird deklariert
    3. Dim byte_data As Byte() = Convert.FromBase64String(DATA) 'Daten-String aus dem Base64-String(!) in ein byte array geschrieben
    4. Dim Out_String As String = String.Empty 'Ausgangswert wird deklariert
    5. RSA_Crypto_ent.FromXmlString(Privatekey_Xml) 'RSA-service erhält den privaten Schlüssel
    6. Out_String = Encoding.Default.GetString(RSA_Crypto_ent.Decrypt(byte_data, True)) 'Daten werden entschlüsselt,in einen und zu einem normalem String geschrieben
    7. RSA_Crypto_ent.Dispose() 'Ressourcen werden freigeben
    8. Return Out_String 'Entschlüsselte Daten werden übergeben
    9. End Function


    In Zeile 3 beim Entschlüsseln wird nun allerdings folgender Fehler ausgeworfen, mit dem ich persönlich nicht viel anfangen kann:

    VB.NET-Quellcode

    1. {"Die Eingabe ist keine gültige Base-64-Zeichenfolge, da sie ein Nicht-Base-64-Zeichen, mehr als zwei Leerstellen oder in den Leerstellen ein Zeichen enthält, das ungültig ist. "}

    StackTrace:

    VB.NET-Quellcode

    1. bei System.Convert.FromBase64_ComputeResultLength(Char* inputPtr, Int32 inputLength)
    2. bei System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength)
    3. bei System.Convert.FromBase64String(String s)
    4. bei SeToNet.rsa.RSA_ent(String DATA, String Privatekey_Xml, Int32 keysize) in C:\Users\*\Desktop\SeToNet\SeToNet\rsa.vb:Zeile 30.
    5. bei RSA_Verschlüsselung.Form1.Button2_Click(Object sender, EventArgs e) in C:\Users\*\Desktop\RSA-Verschlüsselung\RSA-Verschlüsselung\Form1.vb:Zeile 29.
    6. bei System.Windows.Forms.Control.OnClick(EventArgs e)
    7. bei System.Windows.Forms.Button.OnClick(EventArgs e)
    8. bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    9. bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    10. bei System.Windows.Forms.Control.WndProc(Message& m)
    11. bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
    12. bei System.Windows.Forms.Button.WndProc(Message& m)
    13. bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    14. bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    15. bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    16. bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    17. bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    18. bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    19. bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    20. bei System.Windows.Forms.Application.Run(ApplicationContext context)
    21. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    22. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    23. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    24. bei RSA_Verschlüsselung.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
    25. bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    26. bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    27. bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    28. bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    29. bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    30. bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    31. bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    32. bei System.Threading.ThreadHelper.ThreadStart()


    Hat einer eine Idee?
    Das ganze sollte dann mit einem neuen Schlüsselpaar natürlich auch wieder Rückwärts funktionieren
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Linkai“ ()

    da es RSA ist, ändert sich das Resultat von mal zu mal, letzte sieht so aus:

    VB.NET-Quellcode

    1. �DǺ�dK�^)�-wzCO!չ��3#$��ii�eM�c;.��ܬ��w�����j'�-j�;/8�m*�G�^�F��[s�li?��h>����#$�QX�a,��&����{�i�*mz��� ,D�EMd}4���w�%��@��=���� ��E��?��+����y�R4��=��u�eB��M� = ��m��^2��3b�sT�ߓf � B)��Ex0��c��}mX?B4�ڇ��a��*Z�E`722Сei� cq�2��h�6��l��M�o�[6��T[���<99-��ʨ�����1����%��/wpV2�ᥔ�^� ��T=�b�?/�`PL\M��f�K�2�lV�v�����Q K=#SG�+^+�C�X�*�D���7�hs�& gt;^(����p���ЫC����鞵���3x}�ۄ�XMrU����CՂ-�Z�#}��gd+�����9g7Ċ[ ͹g���{����2:�Դ+M�


    Auch die PHP ist UTF8 Encodiert
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    Das ist natürlich kein Base64. Das sieht sehr nach dem direkten binaären Ergebnis aus.

    Linkai schrieb:

    ändert sich das Resultat von mal zu mal
    Öhm. Sicher, dass Crypt_RSA das Format des .NET-RSA-Keys kennt und laden kann? In der Dokumentation steht nur was von Private Key.
    Mit freundlichen Grüßen,
    Thunderbolt
    Es kann in alle Formate umgewandelt werden. Das erzeugte Key-Paar wurde von VB im XML Format gespeichert, welches von der phpseclib ebenfalls unterstützt wird:

    http://phpseclib.sourceforge.net/rsa/examples.html

    Dort kann man bei Key-Format xml anwählen :)



    EDIT#
    Ich habe jetzt mal mit DownloadData das Bytearray direkt geladen und dann der Funktion übergeben.

    Nun erhalte ich in Zeile 6 beim Entschlüsseln allerdings folgenden Fehler

    VB.NET-Quellcode

    1. {"Die zu entschlüsselnden Daten überschreiten das Maximum für das Modul um 512 Bytes."}

    Und ich habe keine Ahnung wieso die Größe überschritten wird 8|
    Es ist mit 4096 Bit Verschlüsselt und es wird auch mit 4096bit Entschlüsselt

    EDIT2#
    Ich habe nun das bytearray zum test nochmal in ein Base64String Convertiert und danach die Funktion zum Entschlüsseln wieder rückgängig gemacht.
    Der Fehler bleibt logischer weise aber der Gleiche.



    Ich habe grade festgestellt, dass wenn ich die Länge des Schlüssels auf 2048 verkürze, dass dann auch die überschreitung der Datenmasse sich halbiert:
    Also statt 512 Bytes zuviel sind es nun nurnoch 256.

    Warum es aber überhaupt dazu kommt kann ich echt nicht sagen:
    Meine Aktuellen Codes:
    Spoiler anzeigen

    PHP-Quellcode

    1. <?php
    2. include('Crypt/RSA.php');
    3. $rsa = new Crypt_RSA();
    4. $rsa->loadKey('<RSAKeyValue><Modulus>6i2VOkSBb9Re1BZRB7rAXlz5uKXkePTI+livN1FqxGSYyaFrBamGVm8FiBRIJiZHZxZH+71KWytO2kLDH5Uw4kHao3olCGTVHT2hGFkt0kiyMil7rcHJnT1wpAb6MQdpaofUC/+bvdq4QOEaRGF/mMCxSi+g8YmOXEq5f4PsHuJ/l0TKouIjnGazNyd6HXOdYuXxHxfrE+LC5Olz3zY+avfUk7es7mcep1Emifz9AxglgnzP150d9H4WtwAqwudxbrAT8cDxGKgENlgfyvyzTT+p5kDCtQziedekLdwcR4A1vcKpzyzAZuT3SS75HcsOxBQ3/qZZdW1rWgHge+twTw==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>'); // public key
    5. $plaintext = 'test';
    6. //$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_OAEP);
    7. $ciphertext = $rsa->encrypt($plaintext);
    8. echo $ciphertext;
    9. ?>


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Security.Cryptography
    2. Imports System.Text
    3. Public Class rsa
    4. Structure RSA_key_Struct
    5. Dim open_key As String 'Bestehend aus einem öffentlichem
    6. Dim privat_key As String 'und einem privatem Schlüssel, die beide als string im XML-Format ges
    7. End Structure
    8. 'Zufälligen RSA Schlüssel erstellen. Mit einer Schlüssellänge von 2048 als Standartwert
    9. Function Create_RSA_Key(Optional ByVal keysize As Integer = 2048) As RSA_key_Struct
    10. Dim RSA_key As RSA_key_Struct 'RSA_key als RSA_key_Struct Struktur definieren
    11. Dim RSA_Crypto As New RSACryptoServiceProvider(keysize) 'Zufällige Schlüssel generieren
    12. RSA_key.open_key = RSA_Crypto.ToXmlString(False) 'Öffentlichen Schlüssel schreiben
    13. RSA_key.privat_key = RSA_Crypto.ToXmlString(True) 'Privaten Schlüssel schreiben
    14. RSA_Crypto.Dispose() 'Ressourcen freigeben
    15. Return RSA_key 'Schlüssel übergeben
    16. End Function
    17. 'String mit RSA verschlüsseln. Mit einer Schlüssellänge von 2048 als Standartwert. Zum Verschlüsseln wird der öffentliche Schlüssel verwendet
    18. Function RSA_ver(ByVal DATA As String, ByVal Openkey_Xml As String, Optional ByVal keysize As Integer = 2048) As String
    19. Dim RSA_Crypto_ver As New RSACryptoServiceProvider(keysize) 'RSA-service wird deklariert
    20. Dim byte_data As Byte() = UTF8Encoding.UTF8.GetBytes(DATA) 'Daten-String wird in ein byte array geschrieben
    21. Dim Out_String As String = String.Empty 'Ausgangswert wird deklariert
    22. RSA_Crypto_ver.FromXmlString(Openkey_Xml) 'RSA-service erhält den öffentlichen Schlüssel
    23. Out_String = Convert.ToBase64String(RSA_Crypto_ver.Encrypt(byte_data, True)) 'Daten werd verschlüsselt und in einen Base64-String geschrieben
    24. RSA_Crypto_ver.Dispose() 'Ressourcen werden freigeben
    25. Return Out_String 'Verschlüsselte Daten werden übergeben
    26. End Function
    27. 'String mit RSA entschlüsseln. Mit einer Schlüssellänge von 2048 als Standartwert. Zum Entschlüsseln wird der private Schlüssel verwendet
    28. Function RSA_ent(ByVal DATA As String, ByVal Privatekey_Xml As String, Optional ByVal keysize As Integer = 2048) As String
    29. Dim RSA_Crypto_ent As New RSACryptoServiceProvider(keysize) 'RSA-service wird deklariert
    30. Dim byte_data As Byte() = Convert.FromBase64String(DATA) 'Daten-String aus dem Base64-String(!) in ein byte array geschrieben
    31. Dim Out_String As String = String.Empty 'Ausgangswert wird deklariert
    32. RSA_Crypto_ent.FromXmlString(Privatekey_Xml) 'RSA-service erhält den privaten Schlüssel
    33. Out_String = Encoding.Default.GetString(RSA_Crypto_ent.Decrypt(byte_data, True)) 'Daten werden entschlüsselt,in einen und zu einem normalem String geschrieben
    34. RSA_Crypto_ent.Dispose() 'Ressourcen werden freigeben
    35. Return Out_String 'Entschlüsselte Daten werden übergeben
    36. End Function
    37. End Class

    Mit der 1. Funktion werden die Schlüsselpaare generiert. Den Public Key kopiere ich
    dann oben in die PHP File.

    Die Funktion zum entschlüsseln wird wie folgt aufgerufen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim wc As New Net.WebClient
    2. wc.Proxy = Nothing
    3. wc.Encoding = System.Text.Encoding.UTF8
    4. Dim privatekey As String = "<RSAKeyValue><Modulus>6i2VOkSBb9Re1BZRB7rAXlz5uKXkePTI+livN1FqxGSYyaFrBamGVm8FiBRIJiZHZxZH+71KWytO2kLDH5Uw4kHao3olCGTVHT2hGFkt0kiyMil7rcHJnT1wpAb6MQdpaofUC/+bvdq4QOEaRGF/mMCxSi+g8YmOXEq5f4PsHuJ/l0TKouIjnGazNyd6HXOdYuXxHxfrE+LC5Olz3zY+avfUk7es7mcep1Emifz9AxglgnzP150d9H4WtwAqwudxbrAT8cDxGKgENlgfyvyzTT+p5kDCtQziedekLdwcR4A1vcKpzyzAZuT3SS75HcsOxBQ3/qZZdW1rWgHge+twTw==</Modulus><Exponent>AQAB</Exponent><P>9xx75vf+e5mABJfctLZltQxqkZU+Xq0TAfhan3n0PfFG3lsQz/e1QwhEhsWv7eEj1FJE08DqdcVorNi0h7anrZLMkyyF2Im5Qs/cRGh0MyGjzm++EIH1q1nIzGukRoSs1j6dWI62aHHmIpFlkRWjq9d0strrvHmNPFfRmMi1/6s=</P><Q>8poBAEtCwgb2y2Y7Bqu0OcN+eyvd+i2ZKRD/8missEEuhey7JeHuf+Da6+U3GlYi6NeQX6QgQ61XX5TYRi6KwM45huWop5rxg6/I9ajR4VlT5ILG0chVk9KZTf525fikgCo2mVFdLfBSc8pjE/P0UYFJyhWXfp6Nw55ZdG6GPe0=</Q><DP>uYbVL4+5rKqOhuRNfBAFRGzSBgN7FDH1N2FzCJDTYz4m6wKMGNftaypl6Jm7gGmsMNijfCg2370a3crFn67vLU4t8cFXrD+arCLLSUDzHQCAr5kNpe8stz1tmKyoZZlu+luAXuCm6ru5APMQwmDwxS+6Gh5rJtJLy6ZTYtYubok=</DP><DQ>QY/K+3hbVzIomflLtFbMwtuJH+JP/984x/dXI/yTxqIm33yFawxuttJed2efh5eFoaU32BDzwzZiKWuBMx460zYoJ8OC26Cs6iikR3dTGPJaEKQi9OiN7//2/DPrj+StGBHQZYiuhM6wiahFNEw2V5x4A4voQAi7SQVPKX8A+lU=</DQ><InverseQ>k+I+03TkX81NGHRorFZrUcraB03viU8eFbFJEF7d9G9qxsR/MT7fjwCEzWYHRrxLbKbU34YKt1tyCYp1CXb+fgeI7zqM5KF4EiQWwR5ZmIuwZMuI1sCDd009TLMqL6GydU7qn06UkkcEgz9RcbPbjz+TCsjtrCgBNhEkwPJaBMs=</InverseQ><D>D5tzHyYyruaAsseRUJ+7M27PO+Wz3kszhoUuRFRk9mrdSKQ9SEF9+7kRgs9rPD5VMu3Suq3pIei3LCfCmRJt5skhzmm/xG6dSizHKvgX7DRpH/EQ1knx6yINpaOgvW9zhfnrLCjgfdzxERiPkhrMu2cC9Iv2a4f8mMe9fjNSI4AErS2qnenQz3jeSXl0VPM2BdjcoCuPRB3l2BMOmlwZ3nJJvrLv3u6Nk5Wnbx5SVC/Zhv3Aw7K1snSdJeZjkZPUp26lLH02PE9WnhxlNXqSMjdBTQmVUY1570R+poZvf3zz6IAHz+PQSkMc1fr5w+Y1an8VD5elQ0NQzJ95htHbDQ==</D></RSAKeyValue>"
    5. Dim result As Byte() = wc.DownloadData("http://localhost/rsa/decrypt.php")
    6. MsgBox(SecProv.rsa.RSA_ent(Convert.ToBase64String(result), privatekey), 2048)


    Keypaar wird natürlich am ende ausgetauscht ;)

    Beiträge zusammengefügt. Große Codestücke in Spoiler verpackt. ~Thunderbolt
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Thunderbolt“ ()

    Rohe Daten solltest Du nie als Strings betrachten, sondern als Byte-Array. In PHP gibt's das halt nicht. Da entspricht ein Zeichen im String genau einem Byte, deshalb arbeiten alle Verschlüsselungs-Methoden in PHP mit Strings.
    Damit PHP nicht auf die Idee kommt, irgendwelche krummen Dinge zu drehen, solltest Du vor dem Ausgeben der verschlüsselten Daten den MIME-Typ auf application/octet-stream stellen (wie hier gezeigt).

    Du verwendest korrekterweise DownloadData im VB-Code.
    Ein Ansatz wäre, den gleichen Text selber (in VB) zu verschlüsseln, und zu prüfen, ob das selbe Ergebnis herauskommt, wie bei PHP. Verwende dazu möglichst einen Klartext ohne Sonderzeichen, damit das Encoding nicht dazwischenfunkt.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Danke @Niko Ortner ,
    Ich habe grade deinen Text gelesen, nachdem ich den Fehler gefunden habe:
    Das Encoding wars. Nicht die PHP war schuld und auch nicht das encoding vom Webclient.

    Es war das Encoding der verdammten, Entschlüsselungs-Funktion:
    Mache aus:

    VB.NET-Quellcode

    1. Out_String = Encoding.Default.GetString(RSA_Crypto_ent.Decrypt(byte_data, True))

    einfach das:

    VB.NET-Quellcode

    1. Out_String = Encoding.UTF8.GetString(RSA_Crypto_ent.Decrypt(byte_data, True))
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    Moment mal. Encoding.Default ist ANSI. UTF-8 und ANSI entsprechen ASCII für Buchstaben und Zahlen. Da du in der PHP-Datei nur Test stehen hast, sollte das Encoding beim Entschlüsseln also egal sein.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Wenn du vorhast, wirkliche Nutzdaten mit RSA zu verschlüsseln, wirst du Probleme bekommen, wenn die Daten zu lang werden. Deshalb geht man normalerweise den Weg, dass man mit RSA nur den Schlüssel für eine symmetrische Verschlüsselung verschlüsselt. Mit dem symmetrischen Cryptosystem (z. B. AES) verschlüsselt man dann die Nutzdaten.
    Falls du Daten signieren willst (z. B. für ein Lizenzsystem), habe ich hier beschrieben, wie man das machen kann:
    github.com/nikeee/license-system
    (bentze sogar serverseitig die gleichen Librarys wie du)

    Ansonsten kann dir @Trade sicher helfen.
    Von meinem iPhone gesendet
    Ich habe bereits eine Hybride verschlüsselung gebastelt aus AES und RSA, trotzdem danke euch allen :) das Thema ist auch seit Tagen auf erledigt gesetzt ^^
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love: