1
0
mirror of https://github.com/php/doc-de.git synced 2026-03-26 00:02:18 +01:00
Files
archived-doc-de/reference/strings/functions/crypt.xml
2010-03-29 00:47:47 +00:00

268 lines
7.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: sammywg Status: ready -->
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xml:id="function.crypt">
<refnamediv>
<refname>crypt</refname>
<refpurpose>Einweg-String-Verschlüsselung (Hashbildung)</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>crypt</methodname>
<methodparam><type>string</type><parameter>str</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>salt</parameter></methodparam>
</methodsynopsis>
<para>
<function>crypt</function> gibt einen Hash-String zurück, der unter
Verwendung des <abbrev>DES</abbrev>-basierenden Algorithmus Unix-Standard-Verschlüsselungsalgorithmus
erstellt wurde. Dieser Algorithmus muss auf dem System verfügbar sein.
</para>
<para>
Einige Betriebssystem unterstützen mehr als eine Methode zur
Verschlüsselung. So wird manchmal der DES- durch einen
MD5-Algorithmus ersetzt. Der verwendete Schlüssel wird durch das
Salt-Argument bestimmt. Zum Installationszeitpunkt untersucht PHP die
vorhandenen Möglichkeiten und wird, abhängig vom Ergebnis dieser
Prüfung, auch andere Schlüssel-Typen zulassen. Wird kein Salt
unterstützt, erzeugt PHP per Voreinstellung einen 2-Zeichen
DES-Salt, es sei denn, auf ihrem System ist MD5 der Standardverschlüsselungstyp.
In diesem Fall wird PHP einen zufälligen MD5-kompatiblen Salt generieren.
PHP setzt eine Konstante namens <constant>CRYPT_SALT_LENGTH</constant>,
die Ihnen sagt, ob ihr System einen regulären 2-Zeichen-Salt oder den
längeren 12-Zeichen-Salt unterstützt.
</para>
<para>
Die Standard-DES-Verschlüsselung <function>crypt</function>
enthält den Salt als erste 2 Zeichen der Ausgabe. Ebenso werden nur die ersten
acht Zeichen von <parameter>str</parameter> berücksichtigt; verwenden Sie also
einen längeren String, der mit den gleichen 8 Buchstaben beginnt, so erhalten
Sie denselben Rückgabewert (sofern Sie ebenfalls den gleichen Salt nutzen).
</para>
<simpara>
Auf Systemen, wo die crypt()-Funktion mehrere Verschlüsselungsarten
unterstützt, werden die folgenden Konstanten auf 0 oder 1
gesetzt, je nachdem, ob der entsprechende Typ verfügbar ist:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>CRYPT_STD_DES</constant> - Standard DES-Schlüssel mit 2-Zeichen-Salt
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CRYPT_EXT_DES</constant> - Erweiterte DES-basierte Verschlüsselung
mit einem 9-Zeichen-Salt
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CRYPT_MD5</constant> - MD5-Verschlüsselung mit 12-Zeichen-Salt,
beginnend mit $1$
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CRYPT_BLOWFISH</constant> - Blowfish-Verschlüsselung mit
16-Zeichen-Salt, beginnend mit $2$ oder $2a$
</simpara>
</listitem>
</itemizedlist>
<note>
<para>
Seit PHP 5.3.0 enthält PHP eine eigene Implementation und verwendet diese,
wenn das System einen oder mehrere der Algorithmen nicht unterstützt.
</para>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>str</parameter></term>
<listitem>
<para>
Die zu verschlüsselnde Zeichenkette.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>salt</parameter></term>
<listitem>
<para>
Ein optionaler Salt-String, der die Schlüsselbasis bildet. Sofern nicht
angegeben, wird von PHP ein zufälliger Wert bei jedem Aufruf der Funktion
generiert.
</para>
<para>
Wenn Sie das gegebene Salt benutzen, sollten Sie beachten, dass
dieser Wert nur einmal bestimmt wird. Rufen Sie diese Funktion nun
mehrmals auf, beeinträchtigt das nicht nur das Ergebnis, sondern
unter Umständen auch die Sicherheit.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Gibt die verschlüsselte Zeichenkette zurück.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>5.3.0</entry>
<entry>
PHP enthält jetzt eine eigene Implementation der MD5-Crypt, Standard DES,
Extended DES und des Blowfish-Algorithmus und verwendet diese, wenn das
System eine oder mehrere der Algorithmen nicht unterstützt.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>crypt</function>-Beispiele</title>
<programlisting role="php">
<![CDATA[
<?php
$passwort = crypt('mein_Pwd'); // Der Salt wird automatisch generiert
/* Sie sollten das vollständige Ergebnis von crypt() als Salt zum
Passwort-Vergleich übergeben, um Problemen mit unterschiedlichen
Hash-Algorithmen vorzubeugen. (Wie bereits ausgeführt, verwendet
ein Standard-DES-Passwort-Hash einen 2-Zeichen-Salt, ein
MD5-basierter hingegen nutzt 12 Zeichen. */
if (crypt($benutzer_eingabe, $passwort) == $passwort) {
echo "Passwort stimmt überein!";
}
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Verwendung von <function>crypt</function> für htpasswd</title>
<programlisting role="php">
<![CDATA[
<?php
// Passwort setzen
$passwort = 'mein_Pwd';
// Hash mit automatisch erstelltem Salt generieren
$hash = crypt($passwort);
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Verwendung von <function>crypt</function> mit verschiedenen Verschlüsselungsarten</title>
<programlisting role="php">
<![CDATA[
<?php
if (CRYPT_STD_DES == 1) {
echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "\n";
}
if (CRYPT_EXT_DES == 1) {
echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n";
}
if (CRYPT_MD5 == 1) {
echo 'MD5: ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n";
}
if (CRYPT_BLOWFISH == 1) {
echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
Standard DES: rl.3StKT.4T8M
Extended DES: _J9..rasmBYk8r9AiWNc
MD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0
Blowfish: $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<simpara>
Es existiert keine decrypt Funktion, da <function>crypt</function>
eine Einweg-Verschlüsselung ist.
</simpara>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>md5</function></member>
<member>Die <link linkend="ref.mcrypt">Mcrypt</link>-Erweiterung</member>
<member>Lesen Sie die Man-Pages ihres Unix-Systems, wenn Sie weitere
Informationen zu Crypt benötigen.</member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->