Foros del Web » Programación para mayores de 30 ;) » Programación General »

password

Estas en el tema de password en el foro de Programación General en Foros del Web. Estoy intentado crear una funcion en .net que me emule esta de perl: if (!$Password) { print STDERR "Usage: bin/CryptPassword.pl NEWPW\n"; } else { my ...
  #1 (permalink)  
Antiguo 27/07/2005, 03:48
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años
Puntos: 1
password

Estoy intentado crear una funcion en .net que me emule esta de perl:

if (!$Password) {
print STDERR "Usage: bin/CryptPassword.pl NEWPW\n";
}
else {
my $Length = length($Password)*8;
chomp $Password;
# get bit code
my $T = unpack("B$Length", $Password);
# crypt bit code
$T =~ s/1/A/g;
$T =~ s/0/1/g;
$T =~ s/A/0/g;
# get ascii code
$T = pack("B$Length", $T);
# get hex code
my $H = unpack("h$Length", $T);
print "Crypted password: {$H}\n";
}

Alguien que pudiera echarme un cable xq no veo donde le pasa el valor del password que mete el usuario.


gracias.

Última edición por Nombela; 28/07/2005 a las 03:00
  #2 (permalink)  
Antiguo 01/08/2005, 08:08
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
en que lenguaje de .net ?? perl.net ???

Es que

$T =~ s/1/A/g;
$T =~ s/0/1/g;
$T =~ s/A/0/g;

Son expresiones regulares, no se si otros lenguajes .net lo poseen...

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 17/08/2005, 03:32
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años
Puntos: 1
Yo quiero pasarlo de perl a asp.net en CSharp. Pero es que de perl no tengo ni idea asi ke no veo la manera de obtener el password en .net. Usando la misma encryptacion que en perl.


gracias
  #4 (permalink)  
Antiguo 17/08/2005, 05:39
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
en ese script que mostras no obtieen el password de ninguna parte, simplemente ya usa una variable $password...

para ingresar los datos podrías hacer

use CGI;
my $cgi = new CGI;
my %input_data = $cgi->Vars;

o my $password = param('password');

en ASP creo que automáticamente te crea el $password así que ya lo tendrías...

No es complicado esa función de encriptación, simplemente aprende en ASP a como substituir caracteres, y a como empaquetar y desempaquetar en formato tanto binari como hexadecimal...Con eso ya está...

Espero que te sirva

Saludos
__________________
Esteban Quintana
  #5 (permalink)  
Antiguo 17/08/2005, 06:17
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años
Puntos: 1
Que perdido estoy!!!

Yo tengo el valor del password, digamos que es CGR y una vez encryptado quedaria prjqSmRFQBP7c

eso es lo que me devuelve la funcion de perl.

Ahora con asp.net intento hacer lo mismo pero es que esto:

my $Length = length($Password)*8;
chomp $Password;
# get bit code
my $T = unpack("B$Length", $Password);
# crypt bit code
$T =~ s/1/A/g;
$T =~ s/0/1/g;
$T =~ s/A/0/g;
# get ascii code
$T = pack("B$Length", $T);
# get hex code
my $H = unpack("h$Length", $T);
print "Crypted password: {$H}\n";

no se lo que hace, si me pudieras dar una pequeña explicacion para que pueda pasarlo a .net
y asi conseguir el mismo metodo de encryptacion.

"empaquetar y desempaquetar en formato tanto binari como hexadecimal"--->hay no se que me kieres decir...

te lo agradeceeria mucho gracias

Última edición por Nombela; 17/08/2005 a las 06:40
  #6 (permalink)  
Antiguo 18/08/2005, 05:43
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
a ver, los datos de bytes vienen codificados en formato binario o hexadecimal, es el formato de 1 y 0, como estén agrupados y toda esa basura...Lo que hacen es desempaquetar la información, la codifican y la vuelven a empaquetar...se entiende ?

la cambian de formato, para modificarla y volverla al formato original ( que ya encriptada no se entiende nada...jeje)

Te repito, ese encriptador no hace más que empaquetar y substituir cadenas, aprendé a como hacer eso en ASP y tendrás el problema resuerto, nosotros no sabemos nada de ASP...jeje

Saludos
__________________
Esteban Quintana
  #7 (permalink)  
Antiguo 19/08/2005, 02:18
Avatar de Nombela  
Fecha de Ingreso: abril-2005
Mensajes: 611
Antigüedad: 19 años
Puntos: 1
no me sale

Hola a ver si vierais el error xq yo creo que los codigos estan bien echos:


PERL:
#!/usr/bin/perl -w
# --
# bin/CryptPassword.pl - to crypt database password for Kernel/Config.pm
# Copyright (C) 2001-2004 Martin Edenhofer <[email protected]>
# --
# $Id: CryptPassword.pl,v 1.1 2004/06/22 08:01:28 martin Exp $
# --
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# --

use strict;

use vars qw($VERSION);
$VERSION = '$Revision: 1.1 $';
$VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;

# --
# check args
# --
my $Password = shift;
print "bin/CryptPassword.pl <Revision $VERSION> - to crypt database password for Kernel/Config.pm\n";
print "Copyright (c) 2001-2004 Martin Edenhofer <martin\@otrs.org>\n";

if (!$Password) {
print STDERR "Usage: bin/CryptPassword.pl NEWPW\n";
}
else {
my $Length = length($Password)*8;
chomp $Password;
# get bit code
my $T = unpack("B$Length", $Password);
# crypt bit code
$T =~ s/1/A/g;
$T =~ s/0/1/g;
$T =~ s/A/0/g;
# get ascii code
$T = pack("B$Length", $T);
# get hex code
my $H = unpack("h$Length", $T);
print "Crypted password: {$H}\n";
}


ASP.NET:
public static string encrypt(string password)
{
string result="";
foreach (char c in password.ToCharArray())
result += encode(c);
return result;
}
public static string encode(char mychar)
{
int result = (int) mychar;
result = (~result) & 255;
result = (result & 15)<<4 | (result & 240)>>4;
return string.Format("{0:x}", result);
}

pero el resultado no es el esperado xq el programa de PERL pone en la base de datos esto: prjqSmRFQBP7c

y mi codigo saca esta: c989d8

que falla???

gracias.
__________________
:si: El hombre es el único animal que come sin tener hambre, bebe sin tener sed y habla sin tener nada que decir. :si:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:30.