2013-01-08 3 views
2

J'ai un client qui a besoin de toutes les données stockées dans la base de données MySQL à chiffrer avec un cryptage 128 bits.cryptage PHP 128 bits et décryptage des données

En supposant que toutes les données avant est insérée dans la base de données, une fonction de PHP est exécuté pour chiffrer. Ensuite, lorsque je tire les données de la base de données, je lance une fonction de décryptage pour cracher le texte/info original.

point Quelqu'un peut-il en moi dans la bonne direction. Je comprends que les fonctions vont utiliser une clé partagée/commune pour crypter et décrypter, mais qu'est-ce qui le rend 128bit? Y a-t-il des fonctions prédéfinies dans PHP qui font cela?

Toute suggestion.

Scott

Répondre

1

En règle générale, « le cryptage 128 bits » fait référence à symmetric encryption en utilisant une clé de 128 bits. AES -128 est un excellent choix pour un algorithme de chiffrement.

Vous devrez également choisir un mode of operation: CBC, CFB, OFB et CTR sont tous de bons choix si vous avez seulement besoin de la vie privée, mais si vous voulez aussi protéger les données contre la falsification, vous devez utiliser un mode authenticated encryption tel que EAX. Ne pas utiliser le mode de la BCE à moins que tous vos dossiers sont plus courts qu'un seul bloc AES (128 bits) aussi, et de préférence même pas si elles sont. En fonction du mode que vous avez choisi, vous devrez généralement générer un vecteur d'initialisation (IV) pour chaque enregistrement, qui devrait être un bloc de chiffrement aléatoire unique et imprévisible (128 bits pour AES). Il y a plusieurs façons de générer un, mais deux bons (recommended by NIST) sont soit en utilisant la sortie d'un cryptographically secure pseudorandom number generator ou crypter un identifiant unique en mode ECB (ce qui est l'un des rares cas pour lesquels il est correct d'utiliser). En fonction de la librairie de chiffrement que vous utilisez, il peut prendre soin de cela pour vous. Veuillez noter que, si vous changez les données cryptées dans un enregistrement, vous devez toujours changer le IV.

Comme le répondent les autres notes, mcrypt est un bon choix pour une bibliothèque cryptographique si vous utilisez PHP.

+0

Un grand merci pour l'info. Je me demande si vous pourriez me montrer un exemple d'une fonction de cryptage et de décryptage complète? Par exemple, si ma chaîne est "Ceci est une chaîne" et qu'elle est stockée sous la forme $ string? –

1

J'espère que here est votre solution. Reportez-vous à deux fonctions encrypt et decrypt sur la page et prenez l'idée.