关于加密解密 Base64 and URL and Hex Encoding and Decoding
来源: 阅读:973 次 日期:2014-08-10 17:23:27
温馨提示: 小编为您整理了“关于加密解密 Base64 and URL and Hex Encoding and Decoding”,方便广大网友查阅!

天想换一下Discuz论坛的风格,谁知下载风格文件后,发现竟然是通过Base64加密过的

小林给推荐了个解密的页面,提取出代码如下:

代码如下:

天<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>Base64 and URL and Hex Encoding and Decoding</title>

<meta name="description" content="Encodes or decodes data in Base64 or URL encoding using client side JavaScript" />

<meta name="keywords" content="base64, base 64, urlencode, urldecode, hexencode, hex encode, hexdecode hex decode, javascript base64, javascript base 64, javascript urlencode, javascript urldecode, javascript hexencode, javascript hexdecode" />

<link rel="shortcut icon" href="http://ostermiller.org/favicon.ico" type="image/x-icon" />

<script language=javascript type="text/javascript">

<!--

function urlDecode(str){

str=str.replace(new RegExp('\\+','g'),' ');

return unescape(str);

}

function urlEncode(str){

str=escape(str);

str=str.replace(new RegExp('\\+','g'),'%2B');

return str.replace(new RegExp('%20','g'),'+');

}

var END_OF_INPUT = -1;

var base64Chars = new Array(

'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 = new Array();

for (var i=0; i < base64Chars.length; i++){

reverseBase64Chars[base64Chars[i]] = i;

}

var base64Str;

var base64Count;

function setBase64Str(str){

base64Str = str;

base64Count = 0;

}

function readBase64(){

if (!base64Str) return END_OF_INPUT;

if (base64Count >= base64Str.length) return END_OF_INPUT;

var c = base64Str.charCodeAt(base64Count) & 0xff;

base64Count++;

return c;

}

function encodeBase64(str){

setBase64Str(str);

var result = '';

var inBuffer = new Array(3);

var lineCount = 0;

var done = false;

while (!done && (inBuffer[0] = readBase64()) != END_OF_INPUT){

inBuffer[1] = readBase64();

inBuffer[2] = readBase64();

result += (base64Chars[ inBuffer[0] >> 2 ]);

if (inBuffer[1] != END_OF_INPUT){

result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);

if (inBuffer[2] != END_OF_INPUT){

result += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);

result += (base64Chars [inBuffer[2] & 0x3F]);

} else {

result += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);

result += ('=');

done = true;

}

} else {

result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);

result += ('=');

result += ('=');

done = true;

}

lineCount += 4;

if (lineCount >= 76){

result += ('\n');

lineCount = 0;

}

}

return result;

}

function readReverseBase64(){

if (!base64Str) return END_OF_INPUT;

while (true){

if (base64Count >= base64Str.length) return END_OF_INPUT;

var nextCharacter = base64Str.charAt(base64Count);

base64Count++;

if (reverseBase64Chars[nextCharacter]){

return reverseBase64Chars[nextCharacter];

}

if (nextCharacter == 'A') return 0;

}

return END_OF_INPUT;

}

function ntos(n){

n=n.toString(16);

if (n.length == 1) n="0"+n;

n="%"+n;

return unescape(n);

}

function decodeBase64(str){

setBase64Str(str);

var result = "";

var inBuffer = new Array(4);

var done = false;

while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT

&& (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){

inBuffer[2] = readReverseBase64();

inBuffer[3] = readReverseBase64();

result += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));

if (inBuffer[2] != END_OF_INPUT){

result += ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));

if (inBuffer[3] != END_OF_INPUT){

result += ntos((((inBuffer[2] << 6) & 0xff) | inBuffer[3]));

} else {

done = true;

}

} else {

done = true;

}

}

return result;

}

var digitArray = new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');

function toHex(n){

var result = ''

var start = true;

for (var i=32; i>0;){

i-=4;

var digit = (n>>i) & 0xf;

if (!start || digit != 0){

start = false;

result += digitArray[digit];

}

}

return (result==''?'0':result);

}

function pad(str, len, pad){

var result = str;

for (var i=str.length; i<len; i++){

result = pad + result;

}

return result;

}

function encodeHex(str){

var result = "";

for (var i=0; i<str.length; i++){

result += pad(toHex(str.charCodeAt(i)&0xff),2,'0');

}

return result;

}

function decodeHex(str){

str = str.replace(new RegExp("s/[^0-9a-zA-Z]//g"));

var result = "";

var nextchar = "";

for (var i=0; i<str.length; i++){

nextchar += str.charAt(i);

if (nextchar.length == 2){

result += ntos(eval('0x'+nextchar));

nextchar = "";

}

}

return result;

}

//--></script>

</head>

<body>

<form name=code onsubmit="return false()">

<textarea name=text style='width:100%;height:75%;' onfocus='if (this.value=="Enter text to encode or decode here."){this.value="";}'>Enter text to encode or decode here.</textarea>

<table>

<tr><td align=center>

<input value="Encode" type=button onclick="document.code.text.value=urlEncode(document.code.text.value);">

</td><td align=center>

URL

</td><td align=center>

<input value="Decode" type=button onclick="document.code.text.value=urlDecode(document.code.text.value);">

</td></tr>

<tr><td align=center>

<input value="Encode" type=button onclick="document.code.text.value=encodeBase64(document.code.text.value);">

</td><td align=center>

Base 64

</td><td align=center>

<input value="Decode" type=button onclick="document.code.text.value=decodeBase64(document.code.text.value);">

</td></tr>

<tr><td align=center>

<input value="Encode" type=button onclick="document.code.text.value=encodeHex(document.code.text.value);">

</td><td align=center>

Hex

</td><td align=center>

<input value="Decode" type=button onclick="document.code.text.value=decodeHex(document.code.text.value);">

</td></tr>

<tr><td align=center>

</td><td align=center>

<input type=reset value=Clear>

</td><td align=center>

</td></tr>

</table>

</form>

<hr>

Base64 encode/decode was ported from a <a href="http://ostermiller.org/utils/Base64.html">Java Base64 encoder/decoder</a>.<br>

Base64 encode/decode was ported to <a href="http://ostermiller.org/base64_actionscript.html">Macromedia Actionscript</a>.<br>

<h3>License</h3>

<p>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.</p>

<p>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

<a href="http://www.gnu.org/copyleft/gpl.html">GNU

General Public License</a> for more details.</p>

<div style="padding:0.2cm;"><a href="http://ostermiller.org/calc/">More converters, calculators, and other JavaScript goodies</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">site index</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>

</body>

</html>

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map