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.
Es funktioniert, was rausgeworfen wird, ist verschlüsselt und nicht mehr lesbar
Den Private sowie den Publickey habe ich in VB-Generieren lassen:
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:
In Zeile 3 beim Entschlüsseln wird nun allerdings folgender Fehler ausgeworfen, mit dem ich persönlich nicht viel anfangen kann:
StackTrace:
Hat einer eine Idee?
Das ganze sollte dann mit einem neuen Schlüsselpaar natürlich auch wieder Rückwärts funktionieren
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
- <?php
- include('Crypt/RSA.php');
- $rsa = new Crypt_RSA();
- $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
- $plaintext = 'Test';
- $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_OAEP);
- $ciphertext = $rsa->encrypt($plaintext);
- echo $ciphertext;
- ?>
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
- Function Create_RSA_Key(Optional ByVal keysize As Integer = 2048) As RSA_key_Struct
- Dim RSA_key As RSA_key_Struct 'RSA_key als RSA_key_Struct Struktur definieren
- Dim RSA_Crypto As New RSACryptoServiceProvider(keysize) 'Zufällige Schlüssel generieren
- RSA_key.open_key = RSA_Crypto.ToXmlString(False) 'Öffentlichen Schlüssel schreiben
- RSA_key.privat_key = RSA_Crypto.ToXmlString(True) 'Privaten Schlüssel schreiben
- RSA_Crypto.Dispose() 'Ressourcen freigeben
- Return RSA_key 'Schlüssel übergeben
- 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
- Function RSA_ent(ByVal DATA As String, ByVal Privatekey_Xml As String, Optional ByVal keysize As Integer = 2048) As String
- Dim RSA_Crypto_ent As New RSACryptoServiceProvider(keysize) 'RSA-service wird deklariert
- Dim byte_data As Byte() = Convert.FromBase64String(DATA) 'Daten-String aus dem Base64-String(!) in ein byte array geschrieben
- Dim Out_String As String = String.Empty 'Ausgangswert wird deklariert
- RSA_Crypto_ent.FromXmlString(Privatekey_Xml) 'RSA-service erhält den privaten Schlüssel
- Out_String = Encoding.Default.GetString(RSA_Crypto_ent.Decrypt(byte_data, True)) 'Daten werden entschlüsselt,in einen und zu einem normalem String geschrieben
- RSA_Crypto_ent.Dispose() 'Ressourcen werden freigeben
- Return Out_String 'Entschlüsselte Daten werden übergeben
- End Function
In Zeile 3 beim Entschlüsseln wird nun allerdings folgender Fehler ausgeworfen, mit dem ich persönlich nicht viel anfangen kann:
StackTrace:
VB.NET-Quellcode
- bei System.Convert.FromBase64_ComputeResultLength(Char* inputPtr, Int32 inputLength)
- bei System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength)
- bei System.Convert.FromBase64String(String s)
- bei SeToNet.rsa.RSA_ent(String DATA, String Privatekey_Xml, Int32 keysize) in C:\Users\*\Desktop\SeToNet\SeToNet\rsa.vb:Zeile 30.
- 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.
- bei System.Windows.Forms.Control.OnClick(EventArgs e)
- bei System.Windows.Forms.Button.OnClick(EventArgs e)
- bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
- bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
- bei System.Windows.Forms.Control.WndProc(Message& m)
- bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
- bei System.Windows.Forms.Button.WndProc(Message& m)
- bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
- bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
- bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
- bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
- bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
- bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
- bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
- bei System.Windows.Forms.Application.Run(ApplicationContext context)
- bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
- bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
- bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
- bei RSA_Verschlüsselung.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
- bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
- bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
- bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
- bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
- bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
- bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
- bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
- 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 ich liebe dich Schatz
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Linkai“ ()