Proteggere File

Installazione, configurazione e uso di programmi e strumenti.
Scrivi risposta
Avatar utente
Polonio
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 296
Iscrizione: martedì 5 febbraio 2008, 21:49

Proteggere File

Messaggio da Polonio »

Scusate, ho creato delle schede in html che ho la necessità di hostare su internet.....

Il problema è che sono delle schede "personali" e quindi vorrei proteggerle con qualche password o, preferibilmente, criptarli.....

Ma il fatto è che queste schede devono poter essere aperte da vari computer e con vari sistemi operativi....... quindi in pratica cercavo qualche consiglio su come farlo.....

Un metodo "universale" che mi viene in mente è comprimere i file (ad esempio in .zip) e mettere la password....... ma questo sistema non mi dà molta affidabilità.....


Grazie in anticpipo
Ciao
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Proteggere File

Messaggio da Spiros »

Secondo me ti conviene salvare i dati in un database o in un file che sia poi inaccessibile con http. Per esempio salvandoli in un file .php come commento e poi, al momento di ricostruire la scheda per farla scaricare a chi ne ha i permessi, leggere il file / il database e "costruire" la pagina.
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
Polonio
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 296
Iscrizione: martedì 5 febbraio 2008, 21:49

Re: Proteggere File

Messaggio da Polonio »

scusami ma non ti ho capito...... :-[ :-[
Puoi spiegarti meglio?? ;D



Grazie, Ciao
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Proteggere File

Messaggio da Spiros »

Da quanto ho capito tu gestisci un sito Internet, o comunque hai accesso a un webserver e ricevi dei dati da organizzare in schede (per esempio con i campi Nome, Cognome, Indirizzo, Posizione, Reddito, Chessoio,...). Più che criptare le schede devi tenere al sicuro i dati. E il metodo più sicuro è tenerli in un database.
Ma forse ho sbagliato e non ho capito bene la situazione. Se non è questa puoi spiegarti meglio?  ;)
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
Polonio
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 296
Iscrizione: martedì 5 febbraio 2008, 21:49

Re: Proteggere File

Messaggio da Polonio »

Si più o meno è così......


l'unica cosa però, è che il sito è gestito in un altra maniera ed è un pò un casino usarlo per queste cose......... Quindi io avevo pensato ad uno di quei servizi di Hosting gratuiti...... come ad esempio SkyDrive che, anche se gestito dalla tanto odiata Microsoft, mi dava l'idea di una cosa abbastanza sicura e seria...... e inoltre c'è anche la possibilità di condividere e permettere l'upload solo a determinati account...... (si infatti dovrei farli registrare  a msn..... ::) ::))


Senno tu che mi consigli?!?  perchè  volendo si trova/compra uno spazio web.....


Ciao e Grazie
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Proteggere File

Messaggio da Spiros »

No, non preoccuparti da chi è gestito lo spazio. Se ti mette a disposizione una spazio e hai a disposizione un linguaggio lato server, come php o asp è sufficiente. Se poi hai anche un database, per esempio mysql è ancora meglio.

Se il server supporta php ti poso aiutare io. Se il server è su Windows forse è più probabile che metta a disposizione asp, che io non conosco.

Comunque la mia idea è sempre di separare i dati dalla struttura della pagina web.
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
Polonio
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 296
Iscrizione: martedì 5 febbraio 2008, 21:49

Re: Proteggere File

Messaggio da Polonio »

Nel frattempo ho iniziato a provare di capirci qualcosa sui database ecc ecc.... risultato: HO BISOGNO DI AIUTO!!!!

Presupponendo che tu sia disposto a farlo.....Ho visto che altervista mette a disposizione un database mysql (non so che vuol dire, ma senza pagare dice "Potenza minima garantita: 300 queries/h" basta??), o senno immagino ci siano anche altre possibilità......

Ho vsito anche che ci sono degli script per far effettuare il login a qualcuno prima di farlo accedere ecc ecc, ma io in quelle simpatiche tabelline del database non so che metterci.......

Puoi aiutarmi????
Grazie comunque

Ciao
Avatar utente
Polonio
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 296
Iscrizione: martedì 5 febbraio 2008, 21:49

Re: Proteggere File

Messaggio da Polonio »

Adesso che sto iniziando a prendere un minimo di confidenza con questi database (ma proprio un minimo), credo che non ci siamo capiti bene............

Ti speigo meglio il mio "problema"....

In pratica io avevo creato un "modulo" (in html) di un paio di pagine che và compilato al computer.....
Tipo uno di quei moduli che devi compilare alle poste per fare qualcosa hai presente?? solo che quelli sono cartacei.....

Insomma, una volta compilato questo "modulo"  avevo la necessità di caricarli su internet in modo che io (o chi di dovere) ci possa accedere ovunque sia....

La mia idea iniziale era di caricare i file in Skydrive, un sito sul quale puoi hostare i tuoi file e per accederci devi fare il login con l'account di msn.......
In più, essendo dei file personali, io volevo criptare i moduli, in modo che se anche qualcuno riuscisse a loggarsi e ad accedere ai file, trovava il file criptato.....

Ma il problema è che i moduli non sono pochi, e quindi per ognuno bisognava creare un archivio, metterlo nell'archivio, mettere la password e caricarlo su Skydrive.......


Poi tu mi hai detto la questione del database, ma non so se i database possono prestarsi a questi moduli di un paio di pagine l'una......


Insomma io non sapendone niente ho preferito fare chiarezza sulla questione per prevenire dei fraintendimenti........

Grazie
Ciao
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Proteggere File

Messaggio da Spiros »

Ah, ora ho capito...  (good) Effettivamente hai ragione, il database è inutile in questo caso. (bad)

Immagino che oltre ai moduli ci siano anche delle pagine PHP che prendono i dati e li immagazzinano in qualche modo, no? Comunque non è questo il punto. Il punto è: noi facciamo una pagina .php; all'inizio del file, lo script controlla se l'utente ha i premessi necessari: se non li ha, allora mostra all'utente la pagina per autenticarsi (scrivere la password); se invece li ha perché ha già scritto la sua password, lo script gli mostra la pagina con il modulo. Forse sembra difficile, ma se vuoi ti aiuti io.  ;)

La struttura è questa:

Codice: Seleziona tutto

<?
session_start();
if(isset($_SESSION['auth'])) $auth = true; else $auth = false;

$pass = <<<PASS
<html>
<head>
<!-- Pagina con la richiesta della password -->
</html>
PASS;

$modulo = <<<MOD
<html>
<!-- Pagina con il modulo, da mostrare solo se l'utente è autenticato. -->
</html>
MOD;

if($auth) print $modulo; else print $pass;
?>

Più o meno, è tutto qui.
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
fortAlamo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 427
Iscrizione: martedì 1 marzo 2005, 9:55
Località: dimensione parallela

Re: Proteggere File

Messaggio da fortAlamo »

scusate l'intrusione, ma metto un "memo" al post per eventuali future ...ficiurs  ;D

grazie
utOnto evoluto :lol:
Debian Testing su pc I; Arch & BT4 su pc II; Openbox;
un consiglio sempre valido!
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Proteggere File

Messaggio da Spiros »

fortAlamo ha scritto: scusate l'intrusione, ma metto un "memo" al post per eventuali future ...ficiurs  ;D

grazie
Accidenti, perché non ci ho mai pensato io per avere aggiornamenti sui topic che mi interessano ma in cui non ho mai postato?
Comunque non si offende nessuno se scrivi più grande...  (rotfl)
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
Polonio
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 296
Iscrizione: martedì 5 febbraio 2008, 21:49

Re: Proteggere File

Messaggio da Polonio »

Ma è paranoia pensare che i file non siano comunque protetti????  ;D ;D

Il fatto è che noi con lo script proteggiamo solo "l'indice" in cui sono elencati i file..... ma i file su internet ci sono comunque........

Io parlo per assurdo perchè, ripeto, non so se sia una cosa possibile o meno, ma è fattibile che qualcuno in qualche modo riesca ad avere accesso ai file??


Grazie mille per la disponibilità e scusami per le preoccupazioni
Ciao
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Proteggere File

Messaggio da Spiros »

Ma io sono proprio cretino, tra una cosa e l'altra mi ero dimenticato... Scusa  :-[

Per farti capire che l'idea è sicura: immagina la situazione in cui in una pagina gli utenti registrati vedono la scritta "Sei un utente registrato", quelli non registrati vedono la scritta: "Fila via, qui non ti vuole nessuno!". Metti che il tipo di protezione non è utente-password, ma semplicemente password (ossia: per accedere basta sapere la password che è uguale per tutti, non c'è un sistema di utenti e password personali). In una pagina (login.html) si mette il form per il login:

Codice: Seleziona tutto

<html>
<head>
<title>Pagina di login</title>
</head>
<body>
<form action="controllo.php" method="post">
Inserisci la password: <input type="password" name="pass" /><br />
<input type="submit" value="Accedi">
</form>
</body>
</html>
In un altra pagina (controllo.php) si controlla se la password è giusta, e se lo è si mostra la stringa per gli utenti registrati, altrimenti si mostra l'altra stringa:

Codice: Seleziona tutto

<?
$benvenuto = "Sei un utente registrato";
$vattene = "Fila via, qui non ti vuole nessuno!";

if ($_POST['pass'] == "passwordsegretissima") print $benvenuto;
else print $vattene;
?>
In questo modo non c'è alcuna speranza, per l'utente senza password, di veder stampata sul browser la frase "Sei un utente registrato". Allo stesso modo, per intenderci, un eventuale utente che non potesse non scrivere la password in modo corretto, non potrebbe mai vedere la frase "Fila via, qui non ti vuole nessuno!". La frase che ci interessa (quella di bevenuto) sarebbe sì presente in un file disponibile a tutti, ma presente sotto forma di stringa in uno script PHP, che ci fa quello che vuoi tu. In questo caso la condizione necessaria è che la variabile passata come post e chiamata 'pass' sia uguale a "passwordsegretissima".

Il tuo caso è identico, solo che la stringa di benvenuto è sostituita da una ben più lunga stringa, che rappresenta il codice HTML di una pagina con un modulo.

Se hai diversi moduli, chiamati 'modulo1', 'modulo2' ecc., prova a inserire nel tuo spazio questi file:

login.html:

Codice: Seleziona tutto

<html>
<head>
<title>Pagina di login</title>
</head>
<body>
<h1>Scegli il modulo che vuoi vedere</h1>
<form action="controllo.php" method="post">
Modulo:
<select name="modulo">
  <option value="1">Modulo 1</option>
  <option value="2">Modulo 2</option>
  <option value="3">Modulo 3</option>
  <option value="4">Modulo 4</option>
  <option value="5">Modulo 5</option>
  <option value="6">Modulo 6</option>
</select><br />
Inserisci la password: <input type="password" name="pass" /><br />
<input type="submit" value="Accedi">
</form>
</body>
</html>
controllo.php:

Codice: Seleziona tutto

<?
if ($_POST['pass'] == "inseriscilatuapassword") include("modulo" . $_POST['modulo'] . ".php");
else $testo = "La password è sbagliata.";
print $testo;
?>
modulo1.php

Codice: Seleziona tutto

<?
$testo = <<<MOD
Codice HTML del modulo numero 1.
MOD;
?>
E così per gli altri moduli.

La dicitura <<<MOD introduce una stringa allo stesso modo delle virgolette, ma in questo modo puoi organizzare meglio il tuo spazio. La stringa finisce con la riga MOD; (che non fa parte della stringa). Tra <<<MOD e MOD; puoi inserire sia le virgolette che gli apici senza paura.

Se hai ancora domande, io sono qui.
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
Zenone
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2712
Iscrizione: martedì 19 settembre 2006, 12:10
Località: Siena
Contatti:

Re: Proteggere File

Messaggio da Zenone »

Scusate se mi intrometto...

inviare una password in chiaro non è una furbata:-)

potresti mettere tutto in md5 e fare il controllo sull'md5 della password!


E se qualcuno accedesse direttamente al file senza passare per la pagina di login?
linuxfeed.org  |   -     WeFeedYou Network
Blog Personale
No alla legge 133.
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Proteggere File

Messaggio da Spiros »

Prima la seconda domanda: se uno scavalca la pagina di login la variabile pass inviata tramite post non esiste, quindi è di sicuro diversa dalla password da inserire. È quasi come se nel campo in cui scrivere la password avesse lasciato in bianco. Se invece ti riferisci ai file modulo1.php e così via, l'interprete php istanzierà una variabile, poi lo script finisce senza restituire niente. Con la variabile non ci fa niente, tantomeno passarla al client. Quindi il tizio vedrebbe una pagina bianca. Per rendere la cosa ancora più sicura si potrebbe fare un redirect alla pagina riguardante l'errore 404, in modo che chiunque arrivi a quella pagina creda che essa non esista, e quindi non tenti neanche di leggerla, cosa che comunque sarebbe impossibile, dato che il demone http, prima di passarla, la darebbe comunque in pasto all'interprete php, che restituirebbe niente, o, appunto il redirect alla pagina di 404.

Quanto alle password in chiaro, o si fa uno script javascript sulla pagina login.html, implementando le funzioni md5, in modo da criptare in questo modo la password prima di mandarla (cosa che però potrebbe andare a scapito dell'accessibilità), oppure, meglio, si usa il protocollo https al posto dell'http, ma qui dipende dal servizio di hosting: se questo non offre la connessione criptata con SSL, c'è poco da fare. Hai altre soluzioni?
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
Zenone
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2712
Iscrizione: martedì 19 settembre 2006, 12:10
Località: Siena
Contatti:

Re: Proteggere File

Messaggio da Zenone »

Okay, ma non ho capito una cosa. Se apro direttamente la pagina modulo1.php..perché mi rimane bianca?

Codice: Seleziona tutto

<?
$testo = <<<MOD
Codice HTML del modulo numero 1.
MOD;
?>
$testo viene assegnato qui...


Per il resto l'md5 lo trovo decisamente più semplice.
linuxfeed.org  |   -     WeFeedYou Network
Blog Personale
No alla legge 133.
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Proteggere File

Messaggio da Spiros »

Perché mai dovrebbe stampare qualcosa? Se sai come funziona un web-server, come apache non hai dubbi: il client richiede la pagina modulo1.php. Il web-server prende la pagina; visto che la pagina ha estensione .php, il web-server, prima di passare i dati al client, da la pagina all'interprete php; php restituisce direttamente il codice HTML fuori dai delimitatori (ma visto che non c'è niente fuori dai delimitatori...); quanto sta all'interno, invece è solo codice php: c'è una variabile, che viene istanziata, e poi non c'è nient'altro, nessuna istruzione print, echo, print_f, niente di niente. Qundi l'interprete php restituisce una pagina vuota. A questo punto il web-server restituisce la pagina al client, che però è vuota.

md5: sì, certo, ma puoi fare un esempio per spiegare esattamente come lo implementaresti?
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
Zenone
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2712
Iscrizione: martedì 19 settembre 2006, 12:10
Località: Siena
Contatti:

Re: Proteggere File

Messaggio da Zenone »

Codice: Seleziona tutto

//javascript per calcolare l'md5
<script type="text/javascript" src="md5.js"></script>

<script type="text/javascript">
<!--
function encrypt () {
var psw = document.login.psw.value ;
if (psw) {
psw = hex_md5(psw) ;
document.login.psw.value = '' ;
document.login.md5.value = psw ;
}

}
// -->
</script>
<form name="login" method="post" action="entra.php" onsubmit="encrypt () ">
Nome utente: <input type="text" name="username">
Password <input type="password" name="psw">
<input type="hidden" name="md5" value="">
<input type="hidden" name="login" value="1">
<input type="submit" value="Login">
</form> 
Così invio a entra.php l'hash md5 e non la password in chiaro.
linuxfeed.org  |   -     WeFeedYou Network
Blog Personale
No alla legge 133.
Avatar utente
Spiros
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1100
Iscrizione: martedì 21 marzo 2006, 15:11
Località: Zurigo

Re: Proteggere File

Messaggio da Spiros »

Sì, in mancanza di una connessione criptata si può fare così.

@Polonio: se vuoi implementare la funzione di Zenone, che garantisce anche che un eventuale cracker inseritosi tra server e client possa leggere la password, devi solo aggiungere nella cartella in cui sono contenuti i tuoi file anche il file md5.js (Zenone, puoi postarlo se ce l'hai? altrimenti io forse ho una mezza idea su dove reperirne uno) e usare il codice che ha appena postato. Inoltre nella pagina del controllo devi sostituire if ($_POST['pass'] == "passwordsegretissima") con if ($_POST['pass'] == md5("passwordsegretissima")).
Spiros
HP Compaq 6910p - Intel Core2 Duo T7500 @ 2.20GHz - 2GB DDR2 - HD 120GB - ATI Mobility Radeon X2300 - Intel PRO/Wireless 4965 AG
Avatar utente
Zenone
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2712
Iscrizione: martedì 19 settembre 2006, 12:10
Località: Siena
Contatti:

Re: Proteggere File

Messaggio da Zenone »

Codice: Seleziona tutto

/*
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*/

/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */

/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }

/*
* Perform a simple self-test to see if the VM is working
*/
function md5_vm_test()
{
return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}

/*
* Calculate the MD5 of an array of little-endian words, and a bit length
*/
function core_md5(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << ((len) % 32);
x[(((len + 64) >>> 9) << 4) + 14] = len;

var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;

for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;

a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);

a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);

a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);

a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);

a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
}
return Array(a, b, c, d);

}

/*
* These functions implement the four basic operations the algorithm uses.
*/
function md5_cmn(q, a, b, x, s, t)
{
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}

/*
* Calculate the HMAC-MD5, of a key and some data
*/
function core_hmac_md5(key, data)
{
var bkey = str2binl(key);
if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);

var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}

var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
return core_md5(opad.concat(hash), 512 + 128);
}

/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}

/*
* Bitwise rotate a 32-bit number to the left.
*/
function bit_rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}

/*
* Convert a string to an array of little-endian words
* If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
*/
function str2binl(str)
{
var bin = Array();
var mask = (1 << chrsz) - 1;
for(var i = 0; i < str.length * chrsz; i += chrsz)
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
return bin;
}

/*
* Convert an array of little-endian words to a string
*/
function binl2str(bin)
{
var str = "";
var mask = (1 << chrsz) - 1;
for(var i = 0; i < bin.length * 32; i += chrsz)
str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
return str;
}

/*
* Convert an array of little-endian words to a hex string.
*/
function binl2hex(binarray)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var str = "";
for(var i = 0; i < binarray.length * 4; i++)
{
str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
}
return str;
}

/*
* Convert an array of little-endian words to a base-64 string
*/
function binl2b64(binarray)
{
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw xyz0123456789+/";
var str = "";
for(var i = 0; i < binarray.length * 4; i += 3)
{
var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16)
| (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
| ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
}
}
return str;
}
Google:-)
linuxfeed.org  |   -     WeFeedYou Network
Blog Personale
No alla legge 133.
Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: Bing [Bot] e 8 ospiti