Comment créer deux façon de coder/décoder les méthodes d'utilisation spécifiques - clés PHP?

J'ai besoin de deux fonctions/méthodes, l'une d'encoder, de l'un à décoder. Ce n'est pas pour le stockage des mots de passe. Chaque utilisateur dispose d'une clé spécifique/sel pour coder les données.

C'est la façon dont je voudrais que cela fonctionne:

function encode($str, $key) {
    //something fancy
}

function decode($str, $key) {
    //something fancy
}

$key = $logged_in_user->get_key();
$plain = 'abc abc 123 123';
$encoded_data = encode($plain, $key);
//some_fancy_encrypted_data_that_is_really_cooooool
$decoded_data = decode($encoded_data, $key);
//abc abc 123 123

Une autre chose est que chaque fois que j'utilise cette fonction doit retourner la même chose à chaque fois que j'utilise le encode fonction avec la même clé.

Comment puis-je faire??

Donc, avez-vous regardé mcrypt (php.net/manual/en/mcrypt.examples.php)? - Déposer le hash tag, parce que vous dites que vous ne pas vous voulez une table de hachage
J'ai un petite classe qui peut faire ce dont vous avez besoin, mais la vraie question est de savoir pourquoi vous vous sentez le besoin individuel de chiffrer les données de chaque utilisateur de manière indépendante. Il est généralement admis qu'une fois un attaquant peut voir vos données stockées ils peuvent aussi voir votre code source, ce qui invalide la plupart des utilisations de l'intérieur de chiffrement, aussi bien intentionnées qu'elles pourraient l'être.
Dans certains cas, il est utile que si la clé utilisée pour crypter/décrypter les données ne peuvent pas être trouvés n'importe où (et seulement appartient à l'utilisateur). Je suis assez sûr que LastPass fait aussi bien.
Parce que ce n'est pas pour l'utilisateur, mais pour les messages entre les utilisateurs. Ainsi, sur la base de données, il n'est pas données en texte brut.
J'ai, mais même avec la même clé, à chaque fois le résultat est différent.

OriginalL'auteur Jason Silberman | 2013-04-08