关于加密解密 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>

(0)

相关推荐

  • java常用工具类之DES和Base64加密解密类

    一.DES加密和解密 package com.itjh.javaUtil; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.spec.InvalidKeySpecExc

  • Js base64 加密解密介绍

    复制代码 代码如下: <script type="text/javascript"> var base64encodechars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var base64decodechars = new Array( -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,

  • php使用base64加密解密图片示例分享

    复制代码 代码如下: <?php //文件名:base64.php $data="/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY/

  • C#编写的Base64加密和解密类

    这个C#类是一个基于Base64的加密和解密类,用户可以可以使用默认的秘钥进行加密.解密,也可以自己设定秘钥进行加密和解密,非常实用 代码一:非常精简的代码 /// <summary> /// Base64加密,解密方法 /// </summary> /// <paramname="s">输入字符串</param> /// <paramname="c">true-加密,false-解密</param&

  • C#实现基于Base64的加密解密类实例

    本文实例讲述了C#实现基于Base64的加密解密类.分享给大家供大家参考.具体如下: 这个C#类是一个基于Base64的加密和解密类,用户可以可以使用默认的秘钥进行加密.解密,也可以自己设定秘钥进行加密和解密,非常实用 using System; using System.Security.Cryptography; using System.Text; namespace DotNet.Utilities { /// <summary> /// Encrypt 的摘要说明. /// <

  • vbs版的解密base64加密的脚本

    复制代码 代码如下: Function fDecode(sStringToDecode)  'This function will decode a Base64 encoded string and returns the decoded string.  'This becomes usefull when attempting to hide passwords from prying eyes.  Const CharList = "ABCDEFGHIJKLMNOPQRSTUVWXYZa

  • php中base64_decode与base64_encode加密解密函数实例

    本文实例讲述了php中base64_decode与base64_encode加密解密函数.分享给大家供大家参考.具体分析如下: 这两个函数在php中是用得对php代码进行加密与解密码的base64_encode是加密,而base64_decode是解密了,下面我们看两个简单实例. base64_encode语法:string base64_decode(string data); 复制代码 代码如下: $str='d3d3LmpiNTEubmV0IOiEmuacrOS5i+Wutg==';   

  • 关于base64加密/解密

    尚不支持中文,有待完善. var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var base64DecodeChars = new Array( -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -

  • python字符串加密解密的三种方法分享(base64 win32com)

    1. 最简单的方法是用base64: 复制代码 代码如下: import base64 s1 = base64.encodestring('hello world')s2 = base64.decodestring(s1)print s1,s2 # aGVsbG8gd29ybGQ=\n# hello world Note: 这是最简单的方法了,但是不够保险,因为如果别人拿到你的密文,也可以自己解密来得到明文 2. 第二种方法是使用win32com.client 复制代码 代码如下: import

  • 关于加密解密 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</tit

  • java使用Base64实现文件加密解密

    本文实例为大家分享了Java实现Base64给文件加密.解密的具体代码,供大家参考,具体内容如下 package test.base64; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import sun.misc.BASE64Decoder;

  • c# AES字节数组加密解密流程及代码实现

    AES类时微软MSDN中最常用的加密类,微软官网也有例子,参考链接:https://docs.microsoft.com/zh-cn/dotnet/api/system.security.cryptography.aes?view=netframework-4.8 但是这个例子并不好用,限制太多,通用性差,实际使用中,我遇到的更多情况需要是这样: 1.输入一个字节数组,经AES加密后,直接输出加密后的字节数组. 2.输入一个加密后的字节数组,经AES解密后,直接输出原字节数组. 对于我这个十八流

  • jQuery实现base64前台加密解密功能详解

    本文实例讲述了jQuery实现base64前台加密解密功能.分享给大家供大家参考,具体如下: 关于加密,很多人想到encodeURI和escape.这个对加密url,尤其是带中文参数的url很有用. 如果只是想做加密解密,类似于Java的DES,网上jQuery有个jquery.base64.js. (关于js的md5加密可以用jquery.md5.js,有兴趣可以找来测试一下). 下面是测试: <html> <head> <title></title> &

  • java实现Base64加密解密算法

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递较长的标识信息.例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.

  • java使用Hex编码解码实现Aes加密解密功能示例

    本文实例讲述了java使用Hex编码解码实现Aes加密解密功能.分享给大家供大家参考,具体如下: 这里的Aes加密解密方法使用Hex进行了编码解码 package com.baidu.wallet.bdwallet.utils; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; i

  • JS实现的base64加密解密完整实例

    本文实例讲述了JS实现的base64加密解密.分享给大家供大家参考,具体如下: 完整的代码: <HTML> <HEAD> <TITLE>Base64</TITLE> <script language=javascript> var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var base64D

  • python中base64加密解密方法实例分析

    本文实例讲述了python中base64加密解密方法.分享给大家供大家参考.具体分析如下: 一.base64 Base64是一种基于64个可打印字符来表示二进制数据的表示方法.由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符.三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示.它可用来作为电子邮件的传输编码.在Base64中的可打印字符包括字母A-Z.a-z.数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中而不同.编码后的

  • java利用Apache commons codec进行MD5加密,BASE64加密解密,执行系统命令

    编写代码之前先来介绍一下我们要用到的两个包; commons-codec-1.10.jar Commons项目中用来处理常用的编码方法的工具类包,例如DES.SHA1.MD5.Base64,URL,Soundx等等. commons-exec-1.3.jar Apache Commons Exec 是 Apache 上的一个 Java 项目,提供一些常用的方法用来执行外部进程 你可以到本站直接下载 Apache Commons 官方包 下面看一下代码结构: import org.apache.c

  • .net调用JScript脚本及JS url加密解密

    .net 使用escape 和 unescape方法: 在 C# 里,使用 escape 和 unescape,添加引用: Microsoft.JScript string strEscaped = Microsoft.JScript.GlobalObject.escape("测试打"); 注意:js的一些函数,在 jscript.net 里,全部放在 GlobalObject 下 同样, 就可以使用 unescape, encodeURI, decodeURI 等等的函数了. 或者S

随机推荐