{"id":1248,"date":"2020-11-14T10:25:24","date_gmt":"2020-11-14T09:25:24","guid":{"rendered":"https:\/\/ekiwi.de\/?p=1248"},"modified":"2020-11-14T10:25:24","modified_gmt":"2020-11-14T09:25:24","slug":"text-verschluesseln-und-entschluesseln-mit-php","status":"publish","type":"post","link":"https:\/\/ekiwi.de\/index.php\/1248\/text-verschluesseln-und-entschluesseln-mit-php\/","title":{"rendered":"Text verschl\u00fcsseln und entschl\u00fcsseln mit PHP"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Inhalt<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/ekiwi.de\/index.php\/1248\/text-verschluesseln-und-entschluesseln-mit-php\/#Die_Funktionen_zum_Verschluesseln_und_Entschluesseln\" >Die Funktionen zum Verschl\u00fcsseln und Entschl\u00fcsseln<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/ekiwi.de\/index.php\/1248\/text-verschluesseln-und-entschluesseln-mit-php\/#Text_mit_PHP_verschluesseln\" >Text mit PHP verschl\u00fcsseln<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/ekiwi.de\/index.php\/1248\/text-verschluesseln-und-entschluesseln-mit-php\/#Text_entschluesseln\" >Text entschl\u00fcsseln<\/a><\/li><\/ul><\/nav><\/div>\n<p>Wie kann ich Text in PHP mit einem Passwort verschl\u00fcsseln und wieder entschl\u00fcsseln?<\/p>\n<p><!--more--><\/p>\n<p>In diesem Tutorial schauen wir uns an, wie wir Text ver- und entschl\u00fcsseln k\u00f6nnen in PHP. F\u00fcr die Verschl\u00fcsselung und Entschl\u00fcsselung verwenden wir ein Passwort. Die Sicherheit der Verschl\u00fcsselung liegt damit in erster Linie an unserem Passwort. Dieses muss geheim bleiben und sollte ausreichend lang sein.<\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/ckVgvufsV6I\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Die_Funktionen_zum_Verschluesseln_und_Entschluesseln\"><\/span>Die Funktionen zum Verschl\u00fcsseln und Entschl\u00fcsseln<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>F\u00fcr die Verschl\u00fcsselung und Entschl\u00fcsselung verwenden wir folgende zwei Funktionen. Wir verwenden hier die OpenSSL-Funktionen von PHP f\u00fcr die Verschl\u00fcsselung. Die Funktionen ver- und entschl\u00fcsseln den Text mit dem \u00fcbergebenen Passwort und kodieren das Ergebnis zudem noch mit Base64.<\/p>\n<pre>function encrypt($plaintext, $password) {\r\n    $method = &quot;AES-256-CBC&quot;;\r\n    $key = hash('sha256', $password, true);\r\n    $iv = openssl_random_pseudo_bytes(16);\r\n\r\n    $ciphertext = openssl_encrypt($plaintext, $method, $key, OPENSSL_RAW_DATA, $iv);\r\n    $hash = hash_hmac('sha256', $ciphertext . $iv, $key, true);\r\n\r\n    return base64_encode($iv . $hash . $ciphertext);\r\n}\r\n\r\nfunction decrypt($encryptedText, $password) {\r\n    $encryptedText = base64_decode($encryptedText);\r\n\r\n    $method = &quot;AES-256-CBC&quot;;\r\n    $iv = substr($encryptedText, 0, 16);\r\n    $hash = substr($encryptedText, 16, 32);\r\n    $ciphertext = substr($encryptedText, 48);\r\n    $key = hash('sha256', $password, true);\r\n\r\n    if (!hash_equals(hash_hmac('sha256', $ciphertext . $iv, $key, true), $hash)) return null;\r\n\r\n    return openssl_decrypt($ciphertext, $method, $key, OPENSSL_RAW_DATA, $iv);\r\n}<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Text_mit_PHP_verschluesseln\"><\/span>Text mit PHP verschl\u00fcsseln<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Zuerst verschl\u00fcsseln wir den Text:<\/p>\n<pre>$s = &quot;Eine Katze kommt selten allein!&quot;;\r\n$pass = &quot;eumel&quot;;\r\n$crypted = encrypt($s, $pass);\r\necho &quot;Encrypted: &quot;.$crypted.&quot;&lt;\/br&gt;\\n&quot;;<\/pre>\n<p>In $crypted haben wir anschlie\u00dfend den verschl\u00fcsselten Text, z.B.:<\/p>\n<blockquote><p>\nEncrypted: yGGp0OdRa9MyhbKv1Fp6og97dBo1uglwU31+I1hAEz8bdL27U2CRdUKCtNNVcq9qanKbVvCF8g\/nLP3Ael6yG9QCoUmag7\/Nzvrldg4eLTY=\n<\/p><\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"Text_entschluesseln\"><\/span>Text entschl\u00fcsseln<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Der Text l\u00e4sst sich mit dem richtigen Passwort auch wieder entschl\u00fcsseln.<\/p>\n<pre>$decrypted = decrypt($crypted, $pass);\r\necho &quot;Decrypted again: &quot;.$decrypted.&quot;&lt;br&gt;\\n&quot;;<\/pre>\n<p>Die R\u00fcckgabe ist entweder der entschl\u00fcsselte Text oder &#8222;null&#8220;, falls das falsche Passwort \u00fcbergeben worden ist.<\/p>\n<pre>$decrypted_false = decrypt($crypted, $pass_false);\r\nif ($decrypted_false == nulL)\r\n    echo &quot;Wrong passphrase!&lt;br&gt;\\n&quot;;\r\n<\/pre>\n<p><a href=\"\/wp-content\/uploads\/2020\/11\/encryption.zip\">Download des Beispiels<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Wie kann ich Text in PHP mit einem Passwort verschl\u00fcsseln und wieder entschl\u00fcsseln?<\/p>\n","protected":false},"author":1,"featured_media":57,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[14,13],"tags":[31],"class_list":["post-1248","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","category-programmierung","tag-php"],"_links":{"self":[{"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/posts\/1248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/comments?post=1248"}],"version-history":[{"count":0,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/posts\/1248\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/media\/57"}],"wp:attachment":[{"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/media?parent=1248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/categories?post=1248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ekiwi.de\/index.php\/wp-json\/wp\/v2\/tags?post=1248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}