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
結束 如果
'迅雷編碼 = "