base64源码
import java.security.*;
import javax.crypto.*;
/**
* 本例解释如何利用DES私钥加密算法加解密
*
* @author Devon
* @version 1.0 04/03/10
*/
public class SingleKeyExample {
public static void main(String[] args) {
try {
String algorithm = "DES"; //定义加密算法,可用 DES,DESede,Blowfish
String message = "Hello World. 这是待加密的信息";
// 生成个DES密钥
KeyGenerator keyGenerator = KeyGenerator.getInstance(algorithm);
keyGenerator.init(56); //选择DES算法,密钥长度必须为56位
Key key = keyGenerator.generateKey(); //生成密钥
// 生成Cipher对象
Cipher cipher = Cipher.getInstance("DES");
//用密钥加密明文(message),生成密文(cipherText)
cipher.init(Cipher.ENCRYPT_MODE, key); //操作模式为加密(Cipher.ENCRYPT_MODE),key为密钥
byte[] cipherText = cipher.doFinal(message.getBytes()); //得到加密后的字节数组
System.out.println("加密后的信息: " + new String(cipherText));
//用密钥加密明文(plainText),生成密文(cipherByte)
cipher.init(Cipher.DECRYPT_MODE, key); //操作模式为解密,key为密钥
byte[] sourceText = cipher.doFinal(cipherText); //获得解密后字节数组
System.out.println("解密后的信息: " + new String(sourceText));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
/**
* @author Devon
*/
import java.security.*;
import java.security.spec.*;
import javax.crypto.*;
public class PairKeyExample {
public static void main(String argv[]) {
try {
String algorithm = "RSA"; //定义加密算法,可用 DES,DESede,Blowfish
String message = "张三,你好,我是李四";
//产生张三的密钥对(keyPairZhang)
KeyPairGenerator keyGeneratorZhang =
KeyPairGenerator.getInstance(algorithm); //指定采用的算法
keyGeneratorZhang.initialize(1024); //指定密钥长度为1024位
KeyPair keyPairZhang = keyGeneratorZhang.generateKeyPair(); //产生密钥对
System.out.println("生成张三的公钥对");
// 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节
byte[] publicKeyZhangEncode = keyPairZhang.getPublic().getEncoded();
//通过网络或磁盘等方式,把公钥编码传送给李四
//李四接收到张三编码后的公钥,将其解码
KeyFactory keyFacoryLi = KeyFactory.getInstance(algorithm); //得到KeyFactory对象
X509EncodedKeySpec x509KeySpec =
new X509EncodedKeySpec(publicKeyZhangEncode); //公钥采用X.509编码
PublicKey publicKeyZhang = keyFacoryLi.generatePublic(x509KeySpec); //将公钥的KeySpec对象转换为公钥
System.out.println("李四成功解码,得到张三的公钥");
//李四用张三的公钥加密信息,并发送给李四
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); //得到Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, publicKeyZhang); //用张三的公钥初始化Cipher对象
byte[] cipherMessage = cipher.doFinal(message.getBytes()); //得到加密信息
System.out.println("加密后信息:" + new String(cipherMessage));
System.out.println("加密完成,发送给李四...");
//张三用自己的私钥解密从李四处收到的信息
cipher.init(Cipher.DECRYPT_MODE, keyPairZhang.getPrivate()); //张三用其私钥初始化Cipher对象
byte[] originalMessage = cipher.doFinal(cipherMessage); //得到解密后信息
System.out.println("张三收到信息,解密后为:" + new String(originalMessage));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Ⅱ base64_decode(" 解密
无聊呀,老是看见有无聊的人用php来加密。
其实PHP是无法加密的,只要把eval替换为exit,运行一次就能看见源代码,不过现在无聊的人都很变态,比如这个代码就被反复“加密”了20次~
“解密”后的代码如下:
<?php
/* please do not edit anything here */
include("footer_content.php");
echo '<div id="foot" style="background-image:url('.get_bloginfo('template_directory').'/images/footer_.gif);height:28px;display:block;color:#888888;text-align:center;padding-top:15px;">
<div class="onethousand_wrap">
<a href="">Zionn</a> designed by <a title="ZENVERSE Premium Themes" href="">ZENVERSE</a> | In conjunction with <a href="">Reseller Hosting</a> from the #1 <a href="">Web Hosting Provider</a> - HostNexus.
</div>
</div>';
$zenverse_global_google_analytics = get_option('zenverse_global_google_analytics');
if ($zenverse_global_google_analytics != '')
wp_footer();
echo '</body></html>';
?>
Ⅲ 求解密<php $_F=__FILE__;$_X=' 源码已贴出
首先解密eval(base64_decode('=='));
结果为:
eval('$_X=base64_decode($_X);$_X=strtr($_X,'123456aouie','aouie123456');$_R=ereg_replace('__FILE__',"'".$_F."'",$_X);eval($_R);$_R=0;$_X=0;')
运行上述代码
$_X=base64_decode($_X);//执行后$_X的值为
?><d4vcl1ss="cl51r"></d4v>
<d4v4d="f22t5r">
<d4v4d="f22t5rm14n">
<14d="f22t5rl2g2"hr5f="<?phpbl2g4nf2('3rl');?>"t4tl5="<?phpbl2g4nf2('n1m5');?>"></1>
<?php5ch2str4psl1sh5s(g5t_2pt42n('cr55k22_f22t5rl4nkc2d5'));?></br><?php5ch2c2m4cpr5ss_c2pyr4ght();?><1hr5f="<?php5ch2h2m5_3rl('/')?>"t4tl5="<?php5ch25sc_1ttr(g5t_bl2g4nf2('n1m5','d4spl1y'));?>"r5l="h2m5"t1rg5t="_bl1nk"><?php5ch25sc_1ttr(g5t_bl2g4nf2('n1m5','d4spl1y'));?></1>-P2w5r5dby<1hr5f="http://www.w2rdpr5ss.2rg/"r5l="n2f2ll2w"t1rg5t="_bl1nk">W2rdPr5ss</1>1nd<1hr5f="http://www.cr55k22.c2m/"t1rg5t="_bl1nk">Cr55K22</1><?php4f(g5t_2pt42n('cr55k22_b541n')=='D4spl1y'){?>-<?php5ch2str4psl1sh5s(g5t_2pt42n('cr55k22_b541nh12'));?><?php}5ls5{}?><?php4f(g5t_2pt42n('cr55k22_tj')=='D4spl1y'){?>-<?php5ch2str4psl1sh5s(g5t_2pt42n('cr55k22_tjc2d5'));?><?php}5ls5{}?>
</d4v>
</d4v>
<?phpwp_f22t5r();?>
<scr4pttyp5="t5xt/j1v1scr4pt"src="<?phpbl2g4nf2('t5mpl1t5_d4r5ct2ry');?>/c2mm5nts-1j1x.js"></scr4pt>
<scr4pttyp5="t5xt/j1v1scr4pt"src="<?phpbl2g4nf2('t5mpl1t5_d4r5ct2ry');?>/cr55k22.m4n.js?v6.o"></scr4pt>
</b2dy>
</html>
$_X=strtr($_X,'123456aouie','aouie123456');//执行后$_X的值为
?><divclass="clear"></div>
<divid="footer">
<divid="footermain">
<aid="footerlogo"href="<?phpbloginfo('url');?>"title="<?phpbloginfo('name');?>"></a>
<?phpechostripslashes(get_option('creekoo_footerlinkcode'));?></br><?phpechocomicpress_right();?><ahref="<?phpechohome_url('/')?>"title="<?phpechoesc_attr(get_bloginfo('name','display'));?>"rel="home"target="_blank"><?phpechoesc_attr(get_bloginfo('name','display'));?></a>-Poweredby<ahref="http://www.wordpress.org/"rel="nofollow"target="_blank">WordPress</a>and<ahref="http://www.creekoo.com/"target="_blank">CreeKoo</a><?phpif(get_option('creekoo_beian')=='Display'){?>-<?phpechostripslashes(get_option('creekoo_beianhao'));?><?php}else{}?><?phpif(get_option('creekoo_tj')=='Display'){?>-<?phpechostripslashes(get_option('creekoo_tjcode'));?><?php}else{}?>
</div>
</div>
<?phpwp_footer();?>
<scripttype="text/javascript"src="<?phpbloginfo('template_directory');?>/comments-ajax.js"></script>
<scripttype="text/javascript"src="<?phpbloginfo('template_directory');?>/creekoo.min.js?v1.3"></script>
</body>
$_R=ereg_replace('__FILE__',"'".$_F."'",$_X);//将$_X中的字符串__FILE__替换为当前文件的路径,并用单引号引起来,原字符串并无可替换内容,故不变
eval($_R);//将上述替换后的内容执行
$_R=0;
$_X=0;
加密的代码等价于如下代码
<divclass="clear"></div>
<divid="footer">
<divid="footermain">
<aid="footerlogo"href="<?phpbloginfo('url');?>"title="<?phpbloginfo('name');?>"></a>
<?phpechostripslashes(get_option('creekoo_footerlinkcode'));?></br><?phpechocomicpress_right();?><ahref="<?phpechohome_url('/')?>"title="<?phpechoesc_attr(get_bloginfo('name','display'));?>"rel="home"target="_blank"><?phpechoesc_attr(get_bloginfo('name','display'));?></a>-Poweredby<ahref="http://www.wordpress.org/"rel="nofollow"target="_blank">WordPress</a>and<ahref="http://www.creekoo.com/"target="_blank">CreeKoo</a><?phpif(get_option('creekoo_beian')=='Display'){?>-<?phpechostripslashes(get_option('creekoo_beianhao'));?><?php}else{}?><?phpif(get_option('creekoo_tj')=='Display'){?>-<?phpechostripslashes(get_option('creekoo_tjcode'));?><?php}else{}?>
</div>
</div>
<?phpwp_footer();?>
<scripttype="text/javascript"src="<?phpbloginfo('template_directory');?>/comments-ajax.js"></script>
<scripttype="text/javascript"src="<?phpbloginfo('template_directory');?>/creekoo.min.js?v1.3"></script>
</body>
Ⅳ php源码怎么加密
一、无需任何PHP扩展的加密
此类加密的代表有 威盾PHP加密专家、PHP在线加密平台、PHP神盾 等。
此类加密都是以eval函数为核心,辅以各式各样的字符串混淆和各种小技巧,来达到加密目的(更准确的说,应该算是混淆)。下面以一个简单的hello world为例来说明此类加密的大体过程。
<?php
echo "hello world";
首先 ,我们把这段代码变为通过eval执行的
<?php
eval('echo "hello world";');
然后 ,我们再进行一些转换,比如说base64编码
<?php
eval(base64_decode('ZWNobyAiaGVsbG8gd29ybGQiOw=='));
就这样子,我们的第一个加密过的php代码新鲜出炉了。。。
上面这个例子非常非常简单,基本上任何有一点php语言基础甚至别的语言基础的人都能轻松的看懂并解密。因此,我们需要一些方法让这个加密至少看上去不是那么简单。
二、同时采用多种编码函数
除了刚才提到的base64,php还有许多内置的编码函数,例如urlencode、gzcompress等。把这些函数混合使用可以提高解密的复杂度(不是难度),此外还可以使用strtr来制定自己的编码规则。 使用变量来代替函数名 使用特定字符来命名变量
这儿所说的特定字符是一些极其相似的字符,如I和1,0和O。试想一下满屏都是O和0组成的变量,并且每一个的名字长度都在10个字符以上。。。 判断文件自身是否被修改
这个功能看似容易,对文件做一下摘要再进行下对比即可知道是否被修改了,但是如何才能在文件内把摘要嵌入进去呢?我没有找到完美的方案,但一个变通的方案还是很容易的。。。
<?php
$code = substr(file_get_contents(__FILE__), 0, -32);
$hash = substr(file_get_contents(__FILE__), -32);
if (md5($code) !== $hash) {
exit('file edited');
}
当然,你可以把这个校验字符串放在别的位置来提高破解的难度。有了这个,别人想破解你的程序可就得多费一点功夫了。。。
既然知道了原理,那解密自然也就非常简单了,总体来说就三步:
把eval替换为输出,比如echo 根据编码规则把字符串还原 如果文件未解密完全,从第一步开始继续
当然,实际上的解密过程并没有这么简单,比如说如果加密的时候使用了gzcompress,那得到的数据将会包含一些二进制数据,而采用一般的文本编辑器打开时这些数据都会显示为乱码,并且在保存时丢失部分数据。解决方法很简单也很麻烦,那就是使用二进制(16进制)方式打开、修改和保存。
Ⅳ 跪求一份e4a 中文编程Base64加密和jie密源码
代码是我自己写的!水平有限,反正功能实现了。原来是迅雷链接转换的函数,已经修改为Base64加密了,可以直接用,解密的没有。。。需要的话参照易语言的修改吧。。。以下为函数:
函数 迅雷编码(原文本 为 文本型) 为 文本型
变量 原文 为 字节型()
变量 余数 为 整数型
变量 三字节数据 为 字节型(3)
变量 码表 为 字节型(64)
变量 len_x 为 整数型
变量 len_y 为 整数型
变量 i 为 整数型
变量 k 为 整数型
变量 结果 为 字节型()
变量 原文扩充 为 字节型(1)
变量 结果扩充 为 字节型(1)
'原文本 = "AA" & 原文本 & "ZZ"
原文 = 文本到字节(原文本 ,"GBK")
原文扩充(0) = 0
结果扩充(0) = 61
len_x = 取字节集长度 (原文)
余数 = len_x % 3
如果 (余数 = 1) 则
原文 = 合并字节集(原文 , 原文扩充)
原文 = 合并字节集(原文 , 原文扩充)
len_x = len_x + 2
否则如果 (余数 = 2) 则
原文 = 合并字节集(原文 , 原文扩充)
len_x = len_x + 1
结束 如果
len_y = len_x * 4 / 3
i = 1
码表(0) = 65
码表(1) = 66
码表(2) = 67
码表(3) = 68
码表(4) = 69
码表(5) = 70
码表(6) = 71
码表(7) = 72
码表(8) = 73
码表(9) = 74
码表(10) = 75
码表(11) = 76
码表(12) = 77
码表(13) = 78
码表(14) = 79
码表(15) = 80
码表(16) = 81
码表(17) = 82
码表(18) = 83
码表(19) = 84
码表(20) = 85
码表(21) = 86
码表(22) = 87
码表(23) = 88
码表(24) = 89
码表(25) = 90
码表(26) = 97
码表(27) = 98
码表(28) = 99
码表(29) = 100
码表(30) = 101
码表(31) = 102
码表(32) = 103
码表(33) = 104
码表(34) = 105
码表(35) = 106
码表(36) = 107
码表(37) = 108
码表(38) = 109
码表(39) = 110
码表(40) = 111
码表(41) = 112
码表(42) = 113
码表(43) = 114
码表(44) = 115
码表(45) = 116
码表(46) = 117
码表(47) = 118
码表(48) = 119
码表(49) = 120
码表(50) = 121
码表(51) = 122
码表(52) = 48
码表(53) = 49
码表(54) = 50
码表(55) = 51
码表(56) = 52
码表(57) = 53
码表(58) = 54
码表(59) = 55
码表(60) = 56
码表(61) = 57
码表(62) = 43
码表(63) = 47
三字节数据 (0) = 1
三字节数据 (1) = 2
三字节数据 (2) = 3
k = 0
判断循环首 k < len_y
结果 = 合并字节集(结果 , 结果扩充)
k = k + 1
判断循环尾
变量循环首 k = 1 至 len_x 步进 3
三字节数据 (1 - 1) = 原文 (k - 1)
三字节数据 (2 - 1) = 原文 (k + 1 - 1)
三字节数据 (3 - 1) = 原文 (k + 2 - 1)
结果 (i - 1) = 码表 (位右移 (三字节数据 (1 - 1), 2) + 1 - 1)
结果 (i + 1 - 1) = 码表 (位左移 (位与 (三字节数据 (1 - 1), 3), 4) + 位右移 (三字节数据 (2 - 1), 4) + 1 - 1)
结果 (i + 2 - 1) = 码表 (位左移 (位与 (三字节数据 (2 - 1), 15), 2) + 位右移 (三字节数据 (3 - 1), 6) + 1 - 1)
结果 (i + 3 - 1) = 码表 (位与 (三字节数据 (3 - 1), 63) + 1 - 1)
i = i + 4
变量循环尾
如果 (余数 = 1) 则
结果 (len_y - 1) = 61
结果 (len_y - 2) = 61
否则如果 (余数 = 2) 则
结果 (len_y - 1) = 61
结束 如果
'迅雷编码 = "