Verschlüsseln und entschlüsseln von Strings

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verschlüsseln und entschlüsseln von Strings

    Hey Leute,

    in meinem anderen Beitrag, habt ihr mich um die korrekte Verschlüsselung meiner Daten gebeten. Nun, da ich die Daten erfolgreich in meine Datenbank importiert und exportiert bekomme, dachte ich mir, dies könnte man eigentlich wirklich machen.

    Ich möchte die Daten gerne über den Body also z.B

    Quellcode

    1. http://DOMAINNAMEN/register.php?Username=

    übermitteln.

    Bisher wurden die Daten innerhalb meiner register.php mit sha1(); verschlüsselt.

    Habt ihr vorschläge oder auch Code-auszüge, mit denen ich arbeiten kann um eine wenigstens rechtskonforme Verschlüsselung basteln kann (eben das nötigste da die App nie veröffentlicht wird)? Würde mich sehr über eure antworten freuen! :)
  • Lenon schrieb:


    Bisher wurden die Daten innerhalb meiner register.php mit sha1(); verschlüsselt.

    Habt ihr vorschläge oder auch Code-auszüge, mit denen ich arbeiten kann um eine wenigstens rechtskonforme Verschlüsselung basteln kann (eben das nötigste da die App nie veröffentlicht wird)? Würde mich sehr über eure antworten freuen! :)
    Nun gibt es verschiedene Möglichkeiten:
    1. Du willst Dich einfach einmal mit dem Thema auseinandersetzen: Lies über die Grundlagen der Kryptographie. Dann wird Dir schnell klar werden, dass Du bisher nicht wirkklich verschlüsselt hast, zumindest nicht mit SHA-1. Dies ist ein Hashing-Mechanismus, Du kannst ihn zur Erstellung einer Signatur verwenden oder um ein Passwort zu hashen. Zur Verschlüsselung von Informationen, die auch wieder entschlüsselt werden müssen, eignet sich SHA-1 nicht. Probiere symmetrische Verfahren wie AES aus und nutze für die Übertragung des gemeinsamen Schlüssels etwas asymmetrisches wie RSA. Du hast viel Arbeit vor Dir, sicherlich auch viel Spass, aber ich würde nicht erwarten, dass dabei etwas "rechtskonformes" herauskommt.
    2. Du brauchst eine sauber implementierte Verschlüsselung mit Rechtssicherheit: Beauftrage jemanden, der weiss, was er tut (und quasi-Standards implementiert): Ein sauberes Verschlüsselungssystem ist nicht trivial, Fehler sind schnell gemacht und für den Laien nicht unbedingt erkennbar. Wenn dann Daten abgeflossen sind, ist das Gejammer groß.
    Grüße, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • NSObject schrieb:

    Ganz einfach
    1. Richte TLS 1.2 auf deinem Server ein. (+ eine Umleitung auf https.)
    2. Und schicke Daten nicht mehr als als URL Parameter.
    Wie soll ich die Daten dann an das php File bekommen?... TLS is aufm jetzigen Anbieter nicht möglich, da dann der webspace dauernd abschmiert.. kann bis zu 4 Wochen dauern, bis als möglich ist. scheiß 1und1...
  • Lenon schrieb:

    NSObject schrieb:

    Ganz einfach
    1. Richte TLS 1.2 auf deinem Server ein. (+ eine Umleitung auf https.)
    2. Und schicke Daten nicht mehr als als URL Parameter.
    Wie soll ich die Daten dann an das php File bekommen?... TLS is aufm jetzigen Anbieter nicht möglich, da dann der webspace dauernd abschmiert.. kann bis zu 4 Wochen dauern, bis als möglich ist. scheiß 1und1...
    Du sollst Https Post statt Get verwenden ;)
  • stefan! schrieb:

    Lenon schrieb:

    NSObject schrieb:

    Ganz einfach
    1. Richte TLS 1.2 auf deinem Server ein. (+ eine Umleitung auf https.)
    2. Und schicke Daten nicht mehr als als URL Parameter.
    Wie soll ich die Daten dann an das php File bekommen?... TLS is aufm jetzigen Anbieter nicht möglich, da dann der webspace dauernd abschmiert.. kann bis zu 4 Wochen dauern, bis als möglich ist. scheiß 1und1...
    Du sollst Https Post statt Get verwenden ;)
    Wie sieht das dann genau aus?... mein register.php File, sieht z.B So aus...



    PHP-Quellcode

    1. <?php
    2. //Step 1. Declare parameters of user information
    3. //securing information and storing variables
    4. $username = htmlentities($_REQUEST["username"]);
    5. $password = htmlentities($_REQUEST["password"]);
    6. $email = htmlentities($_REQUEST["email"]);
    7. //if GET or POST are empty
    8. if (empty($username) || empty($password) || empty($email)){
    9. $returnArray["status"] = "400";
    10. $returnArray["message"] = "Missing required information";
    11. echo json_encode($returnArray);
    12. return;
    13. }
    14. //secure password
    15. $salt = openssl_random_pseudo_bytes(20);
    16. //Build connection
    17. //Secure way to build conn
    18. //php.ini Path
    19. $file = parse_ini_file("php.ini");
    20. //Store in php variables information from ini variables
    21. $host = trim($file["dbhost"]);
    22. $user = trim($file["dbuser"]);
    23. $pass = trim($file["dbpass"]);
    24. $name = trim($file["dbname"]);
    25. //include access.php to call func from access.php file
    26. require("access.php");
    27. $access = new access($host, $user, $pass, $name);
    28. ?>
    Alles anzeigen
  • Ich habe hier: github.com/tonikami/NEWLoginRe…blob/master/Register2.php

    ein php Script für die Registration und den Login gefunden, welches ich damals (selbstverständlich verändert) für meine Android-App als vorläge genommen habe.

    Wie Spreche ich dieses File nun in Swift an und Lese das Echo aus?... Mit Swift habe ich leider sehr wenig Erfahrungen bzw. der Umstieg von Java auf Swift fällt mir extrem schwer..
  • Wenn Du mit PHP auch nicht zurecht kommst, wie wär es wenn Du serverseitig einfach (dein geliebtes) Java nimmst.

    Klasse 1 TLS sollten heute alle Hoster anbieten. - Lt. Suche tun 1&1 das wohl auch. - Wenn dein aktueller Hoster nichts taugt, dann nimm halt einfach einen anderen.
    * Kann Spuren von Erdnüssen enthalten.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von NSObject ()

  • Ich habe das gesamte Login und Register-Interface nun zusammengestellt. Die Daten werden nun zwar innerhalb des Php-Files verschlüsselt, sollte aber für meinen Privaten zweck ausreichen.

    Jetzt stehe ich allerdings vor einem anderen Problem, das ich mir einfacher vorgestellt habe..

    Und zwar wähle ich mit einem Image Picker ein Bild aus, welches auf meinen Webspace in einem Folder gespeichert werden soll, welches den Namen der ID des Benutzers hat. Geht das direkt in Swift? oder muss ich hierfür wieder ein Backend entwickeln?
  • Lenon schrieb:



    Und zwar wähle ich mit einem Image Picker ein Bild aus, welches auf meinen Webspace in einem Folder gespeichert werden soll, welches den Namen der ID des Benutzers hat. Geht das direkt in Swift? oder muss ich hierfür wieder ein Backend entwickeln?
    Klar, du schickst die bild-daten per POST an den webservice und der speichert die daten dann auf der platte oder in einer DB.
  • gritsch schrieb:

    Lenon schrieb:

    Und zwar wähle ich mit einem Image Picker ein Bild aus, welches auf meinen Webspace in einem Folder gespeichert werden soll, welches den Namen der ID des Benutzers hat. Geht das direkt in Swift? oder muss ich hierfür wieder ein Backend entwickeln?
    Klar, du schickst die bild-daten per POST an den webservice und der speichert die daten dann auf der platte oder in einer DB.
    Das ist mir bewusst, die Frage jedoch war, ob es auch ohne ein Serverseitiges Script geht.. Die Daten müssen ja in nem PHP-File über POST abgefragt bzw. verarbeitet werden.
  • NSObject schrieb:

    Die Frage ist etwas wiedersinnig. - Es sein denn, man betrachtet "Magie" als zulässige Option.
    Eben nicht, wenn man verschiedene "API´s" beachtet, wie z.B Firebase, bei welcher man innerhalb der App Die Daten übermitteln kann, ohne ein eigenes Backend zu entwickeln. Hätte ja sein können, dass es so etwas auch für eigene Webspace gibt.
  • Lenon schrieb:

    NSObject schrieb:

    Die Frage ist etwas wiedersinnig. - Es sein denn, man betrachtet "Magie" als zulässige Option.
    Eben nicht, wenn man verschiedene "API´s" beachtet, wie z.B Firebase, bei welcher man innerhalb der App Die Daten übermitteln kann, ohne ein eigenes Backend zu entwickeln. Hätte ja sein können, dass es so etwas auch für eigene Webspace gibt.
    klar kannst du über irgendeine API die dir jemand anderes programmiert hat hochladen oder über webdav oder was auch immer. Irgendwas muss aber immer serverseitig laufen und die daten empfangen und entsprechend ablegen.
  • Lenon schrieb:

    Eben nicht, wenn man verschiedene "API´s" beachtet, wie z.B Firebase, bei welcher man innerhalb der App Die Daten übermitteln kann, ohne ein eigenes Backend zu entwickeln.
    Firebase ist ein Client-Server-Framework. Du musst nur kein Backend erstellen, weil Google bereits so freundlich war, dass für dich zu tun.

    Wenn du Chris Vorschlag mit der Magie ablehnst, solltest du auch keine Magie erwarten bzw, voraussetzen. Grundlagenwissen musst du dir schon selber aneignen, wenn du Client-Server-Anwendungen entwickeln willst.
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Lenon schrieb:

    Eben nicht, wenn man verschiedene "API´s" beachtet, wie z.B Firebase, bei welcher man innerhalb der App Die Daten übermitteln kann, ohne ein eigenes Backend zu entwickeln.
    Firebase ist ein Client-Server-Framework. Du musst nur kein Backend erstellen, weil Google bereits so freundlich war, dass für dich zu tun.
    Wenn du Chris Vorschlag mit der Magie ablehnst, solltest du auch keine Magie erwarten bzw, voraussetzen. Grundlagenwissen musst du dir schon selber aneignen, wenn du Client-Server-Anwendungen entwickeln willst.
    Ich habe jetzt mal etwas versucht, das bringt mich jedoch ein wenig ins schwitzen.. Der Code läuft bei einem bekannten von mir bzw. er hat ihn mir so geschickt..:

    Wenn ich folgendes mache:

    Shell-Script

    1. func imageUploadRequest(){
    2. let myUrl = NSURL(string: "http://URL/ProfilePictures/insertProfilPicture.php");
    3. //let myUrl = NSURL(string: "http://www.boredwear.com/utils/postImage.php");
    4. let request = NSMutableURLRequest(url:myUrl! as URL);
    5. request.httpMethod = "POST";
    6. let param = [
    7. "firstName" : "TEST",
    8. "lastName" : "Kargopolov",
    9. "userId" : self.userId
    10. ]
    11. let boundary = generateBoundaryString()
    12. request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
    13. let imageData = UIImageJPEGRepresentation(imgProfilbild.image!, 1)
    14. if(imageData==nil) { return; }
    15. request.httpBody = createBodyWithParameters(parameters: param, filePathKey: "file", imageDataKey: imageData! as NSData, boundary: boundary) as Data
    16. let task = URLSession.shared.dataTask(with: request as URLRequest) {
    17. data, response, error in
    18. if error != nil {
    19. print("error=\(error)")
    20. return
    21. }
    22. // You can print out response object
    23. print("******* response = \(response)")
    24. // Print out reponse body
    25. let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
    26. print("****** response data = \(responseString!)")
    27. do {
    28. let json = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary
    29. print(json)
    30. //dispatch_async(DispatchQueue.main,{
    31. // self.imgProfilbild.image = nil;
    32. //});
    33. }catch
    34. {
    35. print(error)
    36. }
    37. }
    38. task.resume()
    39. }
    40. func generateBoundaryString() -> String {
    41. return "Boundary-\(NSUUID().uuidString)"
    42. }
    43. }
    44. func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData {
    45. let body = NSMutableData();
    46. if parameters != nil {
    47. for (key, value) in parameters! {
    48. body.appendString(string: "--\(boundary)\r\n")
    49. body.appendString(string: "Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
    50. body.appendString(string: "\(value)\r\n")
    51. }
    52. }
    53. let filename = "user-profile.jpg"
    54. let mimetype = "image/jpg"
    55. body.appendString(string: "--\(boundary)\r\n")
    56. body.appendString(string: "Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
    57. body.appendString(string: "Content-Type: \(mimetype)\r\n\r\n")
    58. body.append(imageDataKey as Data)
    59. body.appendString(string: "\r\n")
    60. body.appendString(string: "--\(boundary)--\r\n")
    61. return body
    62. }
    63. func generateBoundaryString() -> String {
    64. return "Boundary-\(NSUUID().uuidString)"
    65. }
    66. extension NSMutableData {
    67. func appendString(string: String) {
    68. let data = string.data(using: String.Encoding.utf8, allowLossyConversion: true)
    69. append(data!)
    70. }
    Alles anzeigen



    Erhalte ich folgende Errormeldung:



    HTML-Quellcode

    1. ******* response = Optional(<NSHTTPURLResponse: 0x600000421b20> { URL: http://URL/ProfilePictures/insertProfilPicture.php } { status code: 404, headers {
    2. Connection = "keep-alive";
    3. "Content-Encoding" = gzip;
    4. "Content-Type" = "text/html";
    5. Date = "Tue, 21 Feb 2017 21:29:59 GMT";
    6. "Keep-Alive" = "timeout=15";
    7. Server = Apache;
    8. "Transfer-Encoding" = Identity;
    9. "X-Frame-Options" = deny;
    10. } })
    11. ****** response data = <!DOCTYPE html>
    12. <html>
    13. <head>
    14. <meta charset="utf-8">
    15. <style type="text/css">
    16. html, body, #partner, iframe {
    17. height:100%;
    18. width:100%;
    19. margin:0;
    20. padding:0;
    21. border:0;
    22. outline:0;
    23. font-size:100%;
    24. vertical-align:baseline;
    25. background:transparent;
    26. }
    27. body {
    28. overflow:hidden;
    29. }
    30. </style>
    31. <meta content="NOW" name="expires">
    32. <meta content="index, follow, all" name="GOOGLEBOT">
    33. <meta content="index, follow, all" name="robots">
    34. <!-- Following Meta-Tag fixes scaling-issues on mobile devices -->
    35. <meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" name="viewport">
    36. </head>
    37. <body>
    38. <div id="partner"></div>
    39. <script type="text/javascript">
    40. document.write(
    41. '<script type="text/javascript" language="JavaScript"'
    42. + 'src="//sedoparking.com/frmpark/'
    43. + window.location.host + '/'
    44. + '1und1parking6'
    45. + '/park.js">'
    46. + '<\/script>'
    47. );
    48. </script>
    49. </body>
    50. </html>
    51. Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
    Alles anzeigen
    Ich verstehe diese ERROR Domain Fehlermeldung irgendwie nicht so richtig... Ist da wirklich was an meinem Code falsch? Habe mir ein Tutorial darüber angeschaut und mein Code ist eigentlich 1 zu 1 gleich..

    Hier noch das php File:

    PHP-Quellcode

    1. <?php
    2. $firstName = $_POST["firstName"];
    3. $lastName = $_POST["lastName"];
    4. $userId = $_POST["userId"];
    5. $target_dir = "wp-content/uploads/2015/02";if(!file_exists($target_dir))
    6. {
    7. mkdir($target_dir, 0777, true);
    8. }
    9. $target_dir = $target_dir . "/" . basename($_FILES["file"]["name"]);
    10. if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_dir))
    11. {
    12. echo json_encode([
    13. "Message" => "The file ". basename( $_FILES["file"]["name"]). " has been uploaded.",
    14. "Status" => "OK",
    15. "userId" => $_REQUEST["userId"]
    16. ]);
    17. } else {
    18. echo json_encode([
    19. "Message" => "Sorry, there was an error uploading your file.",
    20. "Status" => "Error",
    21. "userId" => $_REQUEST["userId"]
    22. ]);
    23. }
    24. ?>
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Lenon ()