RSA de chiffrement/déchiffrement compatible avec Javascript et PHP
Je tiens à chiffrer en Javascript puis déchiffrer en PHP. Il y a des RSA des implémentations de Javascript et de PHP, mais ils ne sont pas compatibles. Je ne peut pas déchiffrer en PHP correctement ce que j'avais chiffré avec Javascript.
Personne ne sait d'une bibliothèque ou un code qui permettra de travailler à la fois avec le Javascript et le PHP?
Grâce.
- On dirait que vous vous êtes vu ce pour le chiffrement des données sensibles entre un client et un serveur. Vous êtes averti que ce ne sera PAS offrir TOUTE la sécurité à l'encontre d'un man-in-the-middle attack où toutes les données en passant par sera compromise. Utiliser HTTPS pour sécuriser, authentifié de bout en bout le cryptage.
Vous devez vous connecter pour publier un commentaire.
Voici un JavaScript, le cryptage RSA, de la bibliothèque: http://www.ohdave.com/rsa/
Et je pense que vous pouvez utiliser quelque chose comme cette classe pour décrypter l'généré chaîne cryptée - http://www.phpclasses.org/browse/package/4121.html
Laissez-moi savoir si vous gérez des travaux d'ensemble, comme je le suis moi-même à la recherche dans ce sujet (j'ai en fait trouvé ce post à la recherche de cette réponse moi-même 😛 ) .
Edit: Regardez, j'ai aussi trouvé ceci - http://www.sematopia.com/?p=275 - semble liée aux deux précédentes ainsi...
Essayez l'exemple simple suivant.
C'est à l'aide d'un javascript open source de la bibliothèque https://github.com/ziyan/javascript-rsa
HTML/JAVASCRIPT:
PHP:
Profitez-en!
<script language="JavaScript" type="text/javascript" src="jsbn2.js"></script>
Si vous configurez votre serveur pour utiliser SSL, alors vous pouvez avoir transmission cryptée via ajax en utilisant le protocole https. C'est probablement la meilleure façon de crypter les données entre le javascript et le php. Si vous voulez le faire vous-même il y a de grande chances que tu vis quelque part, et le système ne sera pas sécurisée.
Google sur comment configurer le protocole https pour votre serveur.
Je suppose que vous avez une raison valable de le faire d'autre que faire https vous-même, donc je dirais que si vous vous en tenez à des normes que vous devriez être en mesure de déchiffrer facilement avec tout ce que la technologie prend en charge ces normes : c'est à dire qu'il devrait fonctionner
Par exemple si vous chiffrez vos données au format PKCS#7, assurez-vous que votre bibliothèque php sait que les données d'entrée est PKCS#7.
Assurez-vous également que votre clé de chiffrement n'est pas brouillés entre le serveur et le client.
Avez-vous essayer de déchiffrer vos données avec votre bibliothèque javascript ?
J'espère que cela peut aider...
Peut-être que vous pouvez l'aider en mettant le code que vous utilisez pour les js et php.
Aussi, peut-être que vous pourriez être plus précis sur les raisons pour lesquelles vous devez utiliser js et php. Peut-être que vous pourriez utiliser uniquement en php et AJAX (à la requête de la même fonction php) où vous avez été en utilisant js.
Je ne suis pas de sonner mon propre klaxon, mais j'ai un projet à github.com qui va effectuer cette fonctionnalité.
Une clé privée est générée sur le serveur, une clé publique et pkcs#7 certificat est également dérivé de la clé privée. La clé publique est envoyée au client au moment où chaque élément de formulaire assocated avec le formulaire spécifié sont cryptées avant d'être transmises au serveur.
Il est 100% OpenSSL compatibile comme il utilise le PHP extension OpenSSL pour générer, chiffrer et déchiffrer les données.
https://github.com/jas-/jQuery.pidCrypt/
Ce projet n'est pas aussi sécurisé que le PGP parce que le JavaScript ne sera pas signer et crypter des e-mails jusqu'à ce que les données du formulaire sont envoyées au serveur, mais les données du formulaire qui doit être chiffré et signé ou est chiffré à l'aide de RSA à clé publique de chiffrement avant d'être envoyé au serveur.
De nouveau le projet n'est pas complet en termes de l'authentification et de l'e-mail signature, mais pour la forme ordinaire de chiffrement à l'aide d'une clé publique, il fonctionne très bien.
Je trouve ce jsencrypt bibliothèque (http://travistidwell.com/jsencrypt), après 2 jours à essayer j'ai eu ma solution.
Le seul problème que j'ai eu c'est quand j'envoie un long texte. C'est parce que RSA, par définition, prend en charge les chaînes de longueur limitée.
https://security.stackexchange.com/questions/33434/rsa-maximum-bytes-to-encrypt-comparison-to-aes-in-terms-of-security/33445#33445
c'est à dire
Si j'utilise private_key_bits de 1024 je peux envoyer
rien de plus.
Si j'utilise private_key_bits de 512 je peux envoyer
rien de plus.
Sur de longues chaînes de la console JavaScript de rapports: "Message trop long pour le RSA"
Alors si vous souhaitez crypter le long des chaînes, vous devez compresser et de les séparer avant de javascript de chiffrement et après le décryptage rejoindre et à décompresser sur php, je pense que zlib est une bonne solution pour split/join car elle est prise en charge sur le javascript et le php.
Mon code de travail est comme suit:
Arborescence de répertoire doit ressembler à:
et un répertoire accessible en écriture par php à l'extérieur de la zone publique nommé