网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 关于加密解密 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>
    <input value="Encode" type=button onclick="document.code.text.value=urlEncode(document.code.text.value);">
    </td><td>
    URL
    </td><td>
    <input value="Decode" type=button onclick="document.code.text.value=urlDecode(document.code.text.value);">
    </td></tr>
    <tr><td>
    <input value="Encode" type=button onclick="document.code.text.value=encodeBase64(document.code.text.value);">
    </td><td>
    Base 64
    </td><td>
    <input value="Decode" type=button onclick="document.code.text.value=decodeBase64(document.code.text.value);">
    </td></tr>
    <tr><td>
    <input value="Encode" type=button onclick="document.code.text.value=encodeHex(document.code.text.value);">
    </td><td>
    Hex
    </td><td>
    <input value="Decode" type=button onclick="document.code.text.value=decodeHex(document.code.text.value);">
    </td></tr>
    <tr><td>
    </td><td>
    <input type=reset value=Clear>
    </td><td>
    </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><a href="http://ostermiller.org/calc/">More converters, calculators, and other JavaScript goodies</a></div>
    <div><a href="http://ostermiller.org/">ostermiller.org</a> (<a href="http://ostermiller.org/siteindex.html">site index</a>)</div>
    <div><p>Copyright <a href="http://ostermiller.org/contact.pl?regarding=JavaScript+Encoding" class=mail>Stephen Ostermiller</a> 2003-2006</p></div>
    </body>
    </html>
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/23 21:35:28