设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

一款游戏的加密工具RGSS Enction 即将上市

查看数: 5170 | 评论数: 12 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-4-18 18:45

正文摘要:

回复

两个人的嬉闹 发表于 2015-8-12 00:11:19
zeldafd 发表于 2015-4-19 18:58
其實個人一直有一個很白目的加密順序, 先用serialize, 再base64一次, 再用discuz的加密法, 然後再用gzip壓 ...

请问这个要怎么用呢
ky52879 发表于 2015-4-22 17:54:14
很好奇作者的原理是什么?是仿照RM系列默认的加密将所有的音乐、图片等打包在一起吗?还是简单的自解压呢?
PS:我没看录像,如果是自解压,我就只能无语了。。。
summer92 发表于 2015-4-22 10:27:29
不经常变动的加密,应该有被破解的可能,还有 什么 ”易语言“? 大丈夫?

点评

我也不知道為什麼LZ要用易語言  发表于 2015-4-22 10:38
欧买歌 发表于 2015-4-21 22:08:52
建议楼主添加解密功能,添加个加密密码,打开原加密工具输入加密密码即可解密。
万一有一天忘记备份那就惨了。
话说楼主准备好迎接新RM工具的到来吧。
流浪杰哥 发表于 2015-4-20 20:44:45
本帖最后由 流浪杰哥 于 2017-11-22 18:58 编辑

还没上市吗
zeldafd 发表于 2015-4-19 18:58:34
本帖最后由 zeldafd 于 2015-4-19 23:05 编辑

其實個人一直有一個很白目的加密順序, 先用serialize, 再base64一次, 再用discuz的加密法, 然後再用gzip壓縮一次,
最後當成字串, 直接把他放到一個檔尾為dll的偽dll檔案內

@taroxd
就是這個函數:
PHP 代码复制
  1. /**
  2.  * $string 明文或密文
  3.  * $operation 加密ENCODE或解密DECODE
  4.  * $key 密鑰
  5.  * $expiry 密鑰有效期
  6.  */
  7. function  authcode( $string , $operation  = 'DECODE' , $key  = '' , $expiry  = 0) {
  8.     // 動態密匙長度,相同的明文會生成不同密文就是依靠動態密匙
  9.     // 加入隨機密鑰,可以令密文無任何規律,即便是原文和密鑰完全相同,加密結果也會每次不同,增大破解難度。
  10.     // 取值越大,密文變動規律越大,密文變化= 16 的$ckey_length 次方
  11.     // 當此值為0 時,則不產生隨機密鑰
  12.     $ckey_length  = 4;
  13.  
  14.     // 密匙
  15.     // $GLOBALS['discuz_auth_key'] 這裡可以根據自己的需要修改
  16.     $key  = md5( $key  ? $key  : $GLOBALS [ 'discuz_auth_key' ]);
  17.  
  18.     // 密匙a會參與加解密
  19.     $keya  = md5( substr ( $key , 0, 16));
  20.     // 密匙b會用來做數據完整性驗證
  21.     $keyb  = md5( substr ( $key , 16, 16));
  22.     // 密匙c用於變化生成的密文
  23.     $keyc  = $ckey_length  ? ( $operation  == 'DECODE'  ? substr ( $string , 0, $ckey_length ): substr (md5(microtime()), - $ckey_length )) : '' ;
  24.     // 參與運算的密匙
  25.     $cryptkey  = $keya .md5( $keya . $keyc );
  26.     $key_length  = strlen ( $cryptkey );
  27.     // 明文,前10位用來保存時間戳,解密時驗證數據有效性,10到26位用來保存$keyb(密匙b),解密時會通過這個密匙驗證數據完整性
  28.     // 如果是解碼的話,會從第$ckey_length位開始,因為密文前$ckey_length位保存動態密匙,以保證解密正確
  29.     $string  = $operation  == 'DECODE'  ? base64_decode ( substr ( $string , $ckey_length )) : sprintf( '%010d' , $expiry  ? $expiry  + time() : 0). substr (md5( $string . $keyb ), 0, 16). $string ;
  30.     $string_length  = strlen ( $string );
  31.     $result  = '' ;
  32.     $box  = range(0, 255);
  33.     $rndkey  = array ();
  34.     // 產生密匙簿
  35.     for ( $i  = 0; $i  <= 255; $i ++) {
  36.         $rndkey [ $i ] = ord( $cryptkey [ $i  % $key_length ]);
  37.     }
  38.     // 用固定的算法,打亂密匙簿,增加隨機性,好像很複雜,實際上並不會增加密文的強度
  39.     for ( $j  = $i  = 0; $i  < 256; $i ++) {
  40.         $j  = ( $j  + $box [ $i ] + $rndkey [ $i ]) % 256;
  41.         $tmp  = $box [ $i ];
  42.         $box [ $i ] = $box [ $j ];
  43.         $box [ $j ] = $tmp ;
  44.     }
  45.     // 核心加解密部分
  46.     for ( $a  = $j  = $i  = 0; $i  < $string_length ; $i ++) {
  47.         $a  = ( $a  + 1) % 256;
  48.         $j  = ( $j  + $box [ $a ]) % 256;
  49.         $tmp  = $box [ $a ];
  50.         $box [ $a ] = $box [ $j ];
  51.         $box [ $j ] = $tmp ;
  52.         // 從密匙簿得出密匙進行異或,再轉成字符
  53.         $result  .= chr (ord( $string [ $i ]) ^ ( $box [( $box [ $a ] + $box [ $j ]) % 256]));
  54.     }
  55.     if ( $operation  == 'DECODE' ) {
  56.         // substr($result, 0, 10) == 0 驗證數據有效性
  57.         // substr($result, 0, 10) - time() > 0 驗證數據有效性
  58.         // substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 驗證數據完整性
  59.         // 驗證數據有效性,請看未加密明文的格式
  60.         if (( substr ( $result , 0, 10) == 0 || substr ( $result , 0, 10) - time() > 0) && substr ( $result , 10, 16) == substr (md5( substr ( $result , 26). $keyb ), 0, 16)) {
  61.             return  substr ( $result , 26);
  62.         } else  {
  63.             return  '' ;
  64.         }
  65.     } else  {
  66.         // 把動態密匙保存在密文裡,這也是為什麼同樣的明文,生產不同密文後能解密的原因
  67.         // 因為加密後的密文可能是一些特殊字符,複製過程可能會丟失,所以用base64編碼
  68.         return  $keyc . str_replace ( '=' , '' , base64_encode ( $result ));
  69.     }
  70. }
  71.  
  72.  
  73. $a  = "www.test.com" ;
  74. $b  = authcode( $a , "ENCODE" , "abc123" );
  75. echo  $b . "<br/>" ;
  76. echo  authcode( $b , "DECODE" , "abc123" );
  77. ?>

点评

纳尼?!这不是用来加密密码的么?为啥能逆算?  发表于 2015-4-21 14:34
可逆的, 我的PHP框架一直都是用這個套路加密  发表于 2015-4-20 22:47
你确定这是可逆算加密?不可逆算的加密可是连原本的数据也取不回的哦==  发表于 2015-4-20 22:00
@taroxd 放了整個出來, 看看吧WWW  发表于 2015-4-19 23:06
discuz的加密法是什么东西  发表于 2015-4-19 20:27
上贺茂润 发表于 2015-4-19 15:11:26
任何加密都有被破解的可能吧

点评

就是钥匙开锁的问题···没有绝对打不开的锁···  发表于 2015-4-24 16:14
个人认为都有能力破解了的人还需要作弊才能通关?如果真是那样只好发上惨无人道吐槽区了==  发表于 2015-4-19 21:14
差别仅在于用另一个方面来表达同样的意思。  发表于 2015-4-19 19:28
反正你们俩的意思都是相同的。润叔是说“任何加密文件都会有被破解的可能”。弓箭叔说的是“能自己破解的人基本也不会去破解别人的游戏”,差..  发表于 2015-4-19 19:27
这种东西都是用来防小学生的。能自己破解的人基本也不会去破解别人的游戏。我是这么认为的  发表于 2015-4-19 15:24

评分

参与人数 1星屑 +1 收起 理由
英顺的马甲 + 1 我很赞同

查看全部评分

英顺的马甲 发表于 2015-4-19 13:49:30
LZ的产品正式"上市"之后不久就会有人出破解了,相信我==
feicx 发表于 2015-4-19 08:52:40
会支持的,当前只是在测试,一旦发布,都会支持的,以后的版本还可以支持想66RPG一样的网络验证的。
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-25 02:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表