关于加密解密 Base64 and URL and Hex Encoding and Decoding_脚本加解密

来源:脚本之家  责任编辑:小易  

base64的作用不是加密,而是用来避免“字节”中不能转换成可显示字符的数值。比如0-32的控制字符,空格,制表符都不能被打印在纸上,base64只使用大写小写数字标点。可以打印在纸上,数据可以在传统平面媒介上携带。md5是散列函数,提取数据的特征,输出是不可逆的散列值,用于代表某信息A而又不暴露信息A的内容。不直接用于加密文件www.zgxue.com防采集请勿采集本网。

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

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

base64加密的结果还是字符串吗 首先,Base64算不上是一种加密算法。Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,它的目的是用ASCII中定义的可见字符去表示任意的二进制数据。之所以要这样

复制代码 代码如下:

private static final char intToBase64[]={ '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','

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

set\"base64=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+ setlocal enabledelayedexpansion hex2base64 if not defined hex goto:print for/l%a in(1,1,3)do set/a\"n=2*(%a-1) call

<html> 

eval(base64_decode($_POST['e']));意思是将参数中的<script>.部分替换为<script src= ></script>,这样你的网页就被挂上了马。这段代码应该是通过webshell上传到你机器上的一段挂马程序,至于webshell 的

<head> 

base64的作用不是加密,而是用来避免“字节”中不能转换成可显示字符的数值。比如0-32的控制字符,空格,制表符都不能被打印在纸上,base64只使用大写小写数字标点。可以打印在纸上,数据可以在传统平面

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

其实Base64的加密和解密的算法不是很复杂,首先是定义自己64位的密钥,64个字符是固定,但是顺序是可以随自己的设计而变化。例如:char[]BaseTable=new char[64]{'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','+','/'};接下来,在加密的时候就是对于需要加密的每个字符,通过一定的算法,转换成上面64字符的一种;而在解密的时候则是把64字符中任意一个字符反算出加密前的字符。对于每个字符的操作有很多方法,这里就不一一介绍了。需要注意e799bee5baa6e4b893e5b19e31333337373632的是“=”字符,在Base64加密算法中,是很重要的,它是起到补零作用。以下是完整代码:Base64 class-File:clsBase64Description:The class file to encode string or decode string in base algorithAuthor:KnightDate:Oct.8,2005{ Base64 class }-using System;namespace Base64{Summary description for clsBase64.public class clsBase64{private char[]source;private char[]lookupTable;private int length,length2,length3;private int blockCount;private int paddingCount;public clsBase64(){TODO:Add constructor logic heresource=null;length=length2=length3=0;blockCount=0;paddingCount=0;}Create base64 char array using default base64 char arrayparam>return the new base64 char arrayprivate char[]CreateBase64Char(ref char[]CreatePara){char[]BaseTable=new char[64]{'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','+','/'};const int CREATE_TYPE=8;byte bParaValue=0;byte bTemp;for(int i=0;i;i+){bTemp=(byte)(CreatePara[i]);switch(bTemp%CREATE_TYPE){case 1:00000001bTemp=(byte)(bTemp^0x01);break;case 2:00000010bTemp=(byte)(bTemp^0x02);break;case 3:00000100bTemp=(byte)(bTemp^0x04);break;case 4:00001000bTemp=(byte)(bTemp^0x08);break;case 5:00010000bTemp=(byte)(bTemp^0x10);break;case 6:00100000bTemp=(byte)(bTemp^0x20);break;case 7:01000000bTemp=(byte)(bTemp^0x40);break;default:10000000bTemp=(byte)(bTemp^0x80);break;}bParaValue=(byte)(bParaValue^bTemp);}char chrTemp;int nIndex;switch(bParaValue%CREATE_TYPE){case 1:Exechange 0<-->1,2<-->3,4<-->5,6<-->7for(int i=0;i;i+){nIndex=i*CREATE_TYPE;chrTemp=BaseTable[nIndex];BaseTable[nIndex]=BaseTable[nIndex+1];BaseTable[nIndex+1]=chrTemp;chrTemp=BaseTable[nIndex+2];BaseTable[nIndex+2]=BaseTable[nIndex+3];}remove paddingslength3=length2-paddingCount;byte[]result=new byte[length3];for(int x=0;x;x+){result[x]=buffer2[x];}return result;}private byte char2sixbit(char c){if(c='=')return 0;else{for(int x=0;x;x+){if(lookupTable[x]=c)return(byte)x;}should not reach herereturn 0;}}}}内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 关于base64加密/解密
  • vbs版的解密base64加密的脚本
  • js base64 加密解密介绍
  • python字符串加密解密的三种方法分享(base64 win32com)
  • php使用base64加密解密图片示例分享
  • java常用工具类之des和base64加密解密类
  • php中base64_decode与base64_encode加密解密函数实例
  • c#实现基于base64的加密解密类实例
  • c#编写的base64加密和解密类
  • 解密网页加密的两个方法
  • jscript.encode 脚本在线解密 代码
  • 文本 unicode 码加密与解密 代码
  • 网络程序员伴侣lshdic--脚本加解密器
  • md5密码在线破解
  • pack.wsf wsh下的js加密工具新浪也在用
  • 推荐一个javascript的加密工具
  • 键盘各键对应的键值
  • 关于加密解密 base64 and url and hex encoding and decoding
  • asp代码加密
  • 如何使用Base64进行加密和解密
  • 关于base64、md5等加密解密问题
  • 帮忙解密PHP base64加密最好解决方案也提出下。100求破码200求解决方案
  • BASE64加密原理
  • base64加密的结果还是字符串吗
  • 我想知道 string 的值 怎么加密成 data的 是base64?
  • base64重复加密,求助!
  • php base64 解密加密问题
  • 怎么用base64加密字符串
  • 求高手解密 base64 谁见过这样的加密
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页脚本加解密关于base64加密/解密vbs版的解密base64加密的脚本js base64 加密解密介绍python字符串加密解密的三种方法分享(base64 win32com)php使用base64加密解密图片示例分享java常用工具类之des和base64加密解密类php中base64_decode与base64_encode加密解密函数实例c#实现基于base64的加密解密类实例c#编写的base64加密和解密类解密网页加密的两个方法jscript.encode 脚本在线解密 代码文本 unicode 码加密与解密 代码网络程序员伴侣lshdic--脚本加解密器md5密码在线破解pack.wsf wsh下的js加密工具新浪也在用推荐一个javascript的加密工具键盘各键对应的键值关于加密解密 base64 and url and hex encoding and decodingasp代码加密md5密码在线破解jscript.encode 脚本在线解密 代asp代码加密推荐一个javascript的加密工具解密asp源代码解密网页加密的两个方法文本 unicode 码加密与解密 代码关于加密解密 base64 and url anpack.wsf wsh下的js加密工具新浪键盘各键对应的键值jscript.encode 脚本在线解密 代码解密网页加密的两个方法md5密码在线破解文本 unicode 码加密与解密 代码解密asp源代码网络程序员伴侣lshdic--脚本加解密器asp代码加密键盘各键对应的键值关于加密解密 base64 and url and hex en推荐一个javascript的加密工具
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved