Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve...
O script abaixo recebe do banco a senha criptografada e de acordo com a chave teria que descriptografa-la. Porém o script não está exibindo o primeiro caracter da senha.. exemplo a senha criptografada foi
ABC123.. o script retorna apenas BC123.
Segue script para análise:
public function MOD($num,$base) {
return $num % $base;
}
public function descriptografa($mStr,$mChave) {
$Result = $mStr;
$TamanhoString = strlen($mStr);
$TamanhoChave = strlen($mChave);
for ($i = 1; $i < $TamanhoString; $i++) {
$pos = $this->MOD($i,$TamanhoChave);
if ($pos == 0) { $pos = $TamanhoChave; }
$posLetra = ord($Result[$i]) ^ ord($mChave[$pos]);
if ($posLetra == 0) { $posLetra = ord($Result[$i]); }
$Result[$i] = chr($posLetra);
}
return $Result;
}para senhaWEB.. Ah lembrando que o banco é firebird.
Obrigado
Att,
Não é isso não, mas obrigado pela força hinom, mas não é isso não, ja tentei inclusive utilizar o do while()
mostre o código que codifica
O sistema é em delphi, esse é o script que descriptografa a senha... No delphi está OK! funcionando.
function Criptografia(mStr, mChave: string): string;
var
i, TamanhoString, pos, PosLetra, TamanhoChave: Integer;
begin
Result := mStr;
TamanhoString := Length(mStr);
TamanhoChave := Length(mChave);
for i := 1 to TamanhoString do
begin
pos := (i mod TamanhoChave);
if pos = 0 then
pos := TamanhoChave;
posLetra := ord(Result[i]) xor ord(mChave[pos]);
if posLetra = 0 then
posLetra := ord(Result[i]);
Result[i] := chr(posLetra);
end;
end;
Att,
Fagner
Mostre um exemplo de uso
. a chave
. exemplo de string codificada.
// Acredito que o erro está aqui
for ($i = 1; $i < $TamanhoString; $i++) {
//Tem que ser <=
for ($i = 1; $i <= $TamanhoString; $i++) {
// Pois no Delphi está 1 to TamanhoString, então ele conta também com TamanhoString e não // (TamanhoString - 1)
Nada....
Tentei deixando:
for ($i = 1; $i <= $TamanhoString; $i++) {
Tentei com:
for ($i = 0; $i <= $TamanhoString; $i++) {
com:
for ($i = 0; $i < $TamanhoString; $i++) {
e nada...
O bendito do primeiro caracter nunca vem.. rsrs
>
Nada....
Tentei deixando:
for ($i = 1; $i <= $TamanhoString; $i++) {
Tentei com:
for ($i = 0; $i <= $TamanhoString; $i++) {
com:
for ($i = 0; $i < $TamanhoString; $i++) {
e nada...
O bendito do primeiro caracter nunca vem.. rsrs
>
Nada....
Tentei deixando:
for ($i = 1; $i <= $TamanhoString; $i++) {
Tentei com:
for ($i = 0; $i <= $TamanhoString; $i++) {
com:
for ($i = 0; $i < $TamanhoString; $i++) {
e nada...
O bendito do primeiro caracter nunca vem.. rsrs
Você precisa nos fornecer:
1 - Uma chave;
2 - String comum
3 - Esta String com valor criptografado
Salve.. ae deu certo... fui testando esse bendito $pos == 0 ....
comentei a linha
$pos = $this->MOD($i,$TamanhoChave);
//if ($pos == 0) { $pos = $TamanhoChave; }
e deu certo..
Valeus.
:natallaugh:
não li o código mas olhando a sua dscrição e batendo o olho por cima do script
não seria isso ?
for ($i = 1; $i < $TamanhoString; $i++) {
o loop começa por 1.. experimente trocar para 0