2009-12-14 5 views
3

J'ai un programme client rubis cryptant un mot de passe avec la chaîne # crypte comme siRuby string # crypte C# et php

encrypted = password.crypt(SALT) 
    # removing first two characters which actually are the salt for safety 
    return encrypted[2, encrypted.size - 2] 

qu'il envoie ensuite à un serveur pour la comparaison avec elle est stockée chaîne pré-crypté . comment jamais j'ai besoin d'être en mesure d'envoyer le même mot de passe crypté forme une application C# et une page web php et toujours être capable de se connecter avec le même mot de passe de l'un des autres clients.

quel serait le code équivalent en C# et php pour le cryptage?

Répondre

6

C

  • crypt(3)

    crypt() est la fonction de chiffrement de mot de passe. Il est basé sur l'algorithme Data Encryption Standard avec des variantes destinées (entre autres) à décourager l'utilisation des implémentations matérielles d'une recherche de clé. La clé est le mot de passe saisi par l'utilisateur. Salt est une chaîne de deux caractères choisie dans l'ensemble [a-zA-Z0-9./]. Cette chaîne est utilisée pour perturber l'algorithme de l'une des 4096 manières différentes.

Ruby

  • crypt

    applique un algorithme de contrôle cryptographique à sens unique à str en invoquant la crypte de la fonction de bibliothèque standard. L'argument est la chaîne de sel, qui devrait être de deux caractères, chaque caractère tiré de [a-zA-Z0-9./].

PHP

  • crypt

    crypte() retourne une chaîne cryptée en utilisant l'algorithme standard de chiffrement DES Unix ou des algorithmes alternatifs qui peuvent être disponibles sur le système.

python

  • crypt.crypt

    Ce module implémente une interface à la crypte (3) de routine, ce qui est une fonction de hachage à sens unique sur la base d'un algorithme DES modifié;

C#

Le .NET Framework ne comprend pas une API pour Unix fonction crypte, mais voici quelques libraryies qui fournissent des implémentations:

  • CryptAPI

    CryptAPI est une bibliothèque C# qui contient des algorithmes non implémentés dans le framework .NET (NT, NTLM, BlowFish, DES et MD5) reliant et émulant la fonction unix crypt() reprogrammée en C#. Le but principal est de fournir une compatibilité vers l'arrière.

  • A C# implementation of Unix crypt()