Hoy quería cambiar el estilo del foro Discuz. Inesperadamente, después de descargar el archivo de estilo, descubrí que estaba cifrado con Base64.
Xiao Lin recomendó una página descifrada y el código extraído es el siguiente:
Copie el código de código de la siguiente manera:
<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transicional//ES>
<html>
<cabeza>
<title>Codificación y decodificación Base64 y URL y hexadecimal</title>
<meta name=description content=Codifica o decodifica datos en Base64 o codificación URL usando JavaScript del lado del cliente />
<meta nombre = contenido de palabras clave = base64, base 64, código urlen, código url, código hexadecimal, codificación hexadecimal, decodificación hexadecimal hexadecimal, javascript base64, javascript base 64, código urlen javascript, código url de javascript, código hexadecimal de javascript, código hexadecimal de javascript />
<enlace rel=icono de acceso directo href=http://ostermiller.org/favicon.ico type=image/x-icon />
<lenguaje de escritura=tipo javascript=texto/javascript>
<!--
función urlDecode(cadena){
str=str.replace(new RegExp('//+','g'),' ');
devolver unescape(cadena);
}
función urlEncode(cadena){
cadena=escape(cadena);
str=str.replace(new RegExp('//+','g'),'%2B');
return str.replace(new RegExp('%20','g'),'+');
}
varEND_OF_INPUT = -1;
var base64Chars = nueva matriz (
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
'Y','Z','a','b','c','d','e','f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o','p','q','r','s','t','u','v',
'w','x','y', 'z', '0', '1', '2', '3',
'4','5','6','7','8','9','+','/'
);
var reverseBase64Chars = nueva matriz();
para (var i=0; i < base64Chars.length; i++){
ReverseBase64Chars[base64Chars[i]] = i;
}
varbase64Str;
var base64Contar;
función setBase64Str(cadena){
base64Str = cadena;
base64Cuenta = 0;
}
función leerBase64(){
si (!base64Str) devuelve END_OF_INPUT;
si (base64Count >= base64Str.length) devuelve END_OF_INPUT;
var c = base64Str.charCodeAt(base64Count) & 0xff;
base64Count++;
devolver c;
}
función codificarBase64(cadena){
setBase64Str(cadena);
resultado var = '';
var inBuffer = nueva matriz (3);
var cuentalíneas = 0;
var hecho = falso;
mientras (!hecho && (inBuffer[0] = readBase64()) != END_OF_INPUT){
inBuffer[1] = readBase64();
inBuffer[2] = readBase64();
resultado += (base64Chars[ inBuffer[0] >> 2 ]);
si (enBuffer[1] != END_OF_INPUT){
resultado += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
si (enBuffer[2] != END_OF_INPUT){
resultado += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
resultado += (base64Chars [inBuffer[2] y 0x3F]);
} demás {
resultado += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
resultado += ('=');
hecho = verdadero;
}
} demás {
resultado += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
resultado += ('=');
resultado += ('=');
hecho = verdadero;
}
número de líneas += 4;
si (número de líneas >= 76){
resultado += ('/n');
número de líneas = 0;
}
}
resultado de devolución;
}
función leerReverseBase64(){
si (!base64Str) devuelve END_OF_INPUT;
mientras (verdadero){
si (base64Count >= base64Str.length) devuelve END_OF_INPUT;
var nextCharacter = base64Str.charAt(base64Count);
base64Count++;
si (reverseBase64Chars[nextCharacter]){
devolver ReverseBase64Chars[siguienteCarácter];
}
si (nextCharacter == 'A') devuelve 0;
}
devolver END_OF_INPUT;
}
función ntos(n){
n=n.toString(16);
si (n.longitud == 1) n=0+n;
norte=%+norte;
devolver unescape(n);
}
función decodeBase64(cadena){
setBase64Str(cadena);
resultado var = ;
var inBuffer = nueva matriz (4);
var hecho = falso;
mientras (!hecho && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
&& (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
inBuffer[2] = readReverseBase64();
inBuffer[3] = readReverseBase64();
resultado += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
si (enBuffer[2] != END_OF_INPUT){
resultado += ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
si (enBuffer[3] != END_OF_INPUT){
resultado += ntos((((inBuffer[2] << 6) & 0xff) | inBuffer[3]));
} demás {
hecho = verdadero;
}
} demás {
hecho = verdadero;
}
}
resultado de devolución;
}
var digitArray = new Array('0','1','2','3','4','5','6','7','8','9','a', 'b','c','d','e','f');
función aHex(n){
resultado var = ''
var inicio = verdadero;
para (var i=32; i>0;){
i-=4;
var dígito = (n>>i) & 0xf;
si (!inicio || dígito != 0){
inicio = falso;
resultado += matriz de dígitos[dígito];
}
}
return (resultado==''?'0':resultado);
}
pad de función(cadena, len, pad){
resultado var = cadena;
for (var i=cadena.longitud; i<len; i++){
resultado = pad + resultado;
}
resultado de devolución;
}
función codificarHex(cadena){
resultado var = ;
para (var i=0; i<str.length; i++){
resultado += pad(toHex(str.charCodeAt(i)&0xff),2,'0');
}
resultado de devolución;
}
función decodificarHex(cadena){
str = str.replace(new RegExp(s/[^0-9a-zA-Z]//g));
resultado var = ;
var siguientechar = ;
para (var i=0; i<str.length; i++){
nextchar += str.charAt(i);
si (siguientechar.longitud == 2){
resultado += ntos(eval('0x'+nextchar));
siguientechar = ;
}
}
resultado de devolución;
}
//--></script>
</cabeza>
<cuerpo>
<nombre del formulario=código al enviar=devolver falso()>
<textarea name=text style='width:100%;height:75%;' onfocus='if (this.value==Ingrese el texto para codificar o decodificar aquí.){this.value=;}'>Ingrese el texto para codificar o decodificar aquí.</textarea>
<tabla>
<tr><td align=centro>
<valor de entrada=Tipo de codificación=botón al hacer clic=document.code.text.value=urlEncode(document.code.text.value);>
</td><td align=center>
URL
</td><td align=center>
<valor de entrada=Tipo de decodificación=botón al hacer clic=document.code.text.value=urlDecode(document.code.text.value);>
</td></tr>
<tr><td align=centro>
<valor de entrada=Tipo de codificación=botón al hacer clic=document.code.text.value=encodeBase64(document.code.text.value);>
</td><td align=center>
Base 64
</td><td align=center>
<valor de entrada=Tipo de decodificación=botón al hacer clic=document.code.text.value=decodeBase64(document.code.text.value);>
</td></tr>
<tr><td align=centro>
<valor de entrada=Tipo de codificación=botón al hacer clic=document.code.text.value=codificarHex(document.code.text.value);>
</td><td align=center>
Maleficio
</td><td align=center>
<valor de entrada=Tipo de decodificación=botón al hacer clic=document.code.text.value=decodeHex(document.code.text.value);>
</td></tr>
<tr><td align=centro>
</td><td align=center>
<tipo de entrada=valor de reinicio=Borrar>
</td><td align=center>
</td></tr>
</tabla>
</formulario>
<hora>
La codificación/decodificación Base64 se transfirió desde un <a href=http://ostermiller.org/utils/Base64.html>codificador/decodificador Java Base64</a>.<br>
La codificación/decodificación Base64 se transfirió a <a href=http://ostermiller.org/base64_actionscript.html>Macromedia Actionscript</a>.<br>
<h3>Licencia</h3>
<p>Este programa es software gratuito; puedes redistribuirlo y/o modificarlo.
bajo los términos de la Licencia Pública General GNU publicada por Free
Software Foundation; ya sea la versión 2 de la Licencia o (a su elección)
cualquier versión posterior.</p>
<p>Este programa se distribuye con la esperanza de que sea útil,
pero SIN NINGUNA GARANTÍA; ni siquiera la garantía implícita de COMERCIABILIDAD;
o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
<a href=http://www.gnu.org/copyleft/gpl.html>GNU
Licencia pública general</a> para más detalles.</p>
<div style=padding:0.2cm;><a href=http://ostermiller.org/calc/>Más conversores, calculadoras y otras ventajas de JavaScript</a></div>
<div style=padding:0.2cm;text-align:right;><a href=http://ostermiller.org/>ostermiller.org</a> (<a href=http://ostermiller.org/siteindex .html>índice del sitio</a>)</div>
<div style=padding:0.2cm;><p>Copyright <a href=http://ostermiller.org/contact.pl?regarding=JavaScript+Encoding class=mail>Stephen Ostermiller</a> 2003-2006</ p></div>
</cuerpo>
</html>