当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 今天编了个加密程式--抛砖引玉
帖子发表于 : 2007-07-23 14:19 

注册: 2007-02-15 6:26
帖子: 356
送出感谢: 0 次
接收感谢: 1
欢迎加入“健脑俱乐部“--呵呵:em05

<?php
@session_start();
$str = "测试benb 661-1-1-1-1-a dasdkjf asdf asdf akjsdf asdf 1a";
$b62 = @enc65($str,1);
$d62 = @dec65($b62,1);
echo "<pre>str = [$str]<p>b62 = [$b62] ".@strlen($b62)."<p>d62 = [$d62]";

function benkey65($sesIp=0)
{
$b65 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-_";
$b30 = @substr($b65,0,32);
$key = "dkdkdkd wxyz";
if ($sesIp) $key .= $_SERVER['REMOTE_ADDR'].@session_id();
$key = @strtoupper(@md5(@md5($key)));
$key = @str_replace(@array("U","V","W","X","Y","Z"),"0",$key);
for ($i=0;$i<32;$i++){
$cur = @strpos($b30,@substr($key,$i,1))-10;
$arr[] = $cur;
$b65 = @cook65($b65,$i,$cur);
}
$arr[] = $b65;
return $arr;
}
function cook65($b65,$fm,$to)
{
$pos = $fm + $to;
if ($pos < 0 || $pos > 64 || $fm==$pos) return $b65;
if ($fm>$pos) @swap($fm,$pos);
$b65 = @substr($b65,0,$fm).@substr($b65,$pos,1).@substr($b65,$fm+1,$pos-$fm-1).@substr($b65,$fm,1).@substr($b65,$pos+1);
return @substr($b65,$pos).@substr($b65,0,$pos);
}
function swap(&$a,&$b){$c=$a;$a=$b;$b=$c;}
function enc65($str,$sesIp=0)//any str ascii 10-254
{
$key = @benkey65($sesIp);

$len = @strlen($str);
if ($len<32) $str .= @str_repeat(" ",32-$len);

for ($i=0;$i<$len || $i<32;$i++) $res .= @str_pad(@ord(@substr($str,$i,1)) + $key[$i % 32],3,0,STR_PAD_LEFT);

$len = @strlen($res);
if ($len%6>0) $res .= "032";
for ($i=0;$i<$len;$i +=6) $res2 .= @base65(@substr($res,$i,6),$key[32]);
$res2 = @substr($res2,$key[0]).@substr($res2,0,$key[0]);
$res2 = @substr($res2,$key[5]).@substr($res2,0,$key[5]);
$res2 = @substr($res2,$key[9]).@substr($res2,0,$key[9]);
return $res2;

}
function dec65($str,$sesIp=0)
{
$key = @benkey65($sesIp);
$str = @substr($str,0-$key[9]).@substr($str,0,0-$key[9]);
$str = @substr($str,0-$key[5]).@substr($str,0,0-$key[5]);
$str = @substr($str,0-$key[0]).@substr($str,0,0-$key[0]);
$len = @strlen($str);
for ($i=0;$i<$len;$i +=3) $res .= @str_pad(@strpos($key[32],@substr($str,$i,1))*65*65 + @strpos($key[32],@substr($str,$i+1,1))*65 + @strpos($key[32],@substr($str,$i+2,1)),6,0,STR_PAD_LEFT);
if (@substr($res,-3)=="032") $res = @substr($res,0,-3);
$len = @strlen($res)/3;

for ($i=0;$i<$len;$i++) $res2 .= @chr(@substr($res,$i*3,3) - $key[$i % 32]);

return @trim($res2);

}
function base65($int,$b65)
{
$b = $int%(65*65);
return @substr($b65,@floor($int/65/65),1).@substr($b65,@floor($b/65),1).@substr($b65,$b%65,1);
}
?>


_________________
2007:琉璃地,旃檀林。心心作。念念是。


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-07-25 19:54 

注册: 2006-12-29 14:27
帖子: 14
送出感谢: 0 次
接收感谢: 0 次
无敌了~学习。。。
发现自己是多么不重视字符串处理函数。。。


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-09-04 22:02 

注册: 2007-08-27 9:11
帖子: 26
送出感谢: 0 次
接收感谢: 0 次
字符串处理的高手阿,望其项背


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-09-05 6:46 

注册: 2007-02-15 6:26
帖子: 356
送出感谢: 0 次
接收感谢: 1
这个加密程式,被我用在MYSQL SIDU 里了。

若是被您破解了,不要忘了告诉我一声。咱们互相学学。呵呵。


_________________
2007:琉璃地,旃檀林。心心作。念念是。


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-09-05 6:57 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
加密,应该用C的unsigned char 数组吧。呵呵。
字符串操作,总会觉得有隐含的问题。

不会php。说想法。


_________________
● 鸣学


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-11-25 3:09 
头像

注册: 2007-09-28 2:33
帖子: 47
地址: 重庆
送出感谢: 0 次
接收感谢: 0 次
用不着的
何必呢? 你已经用了2次MD5已经足够了
其他东西都没有必要 加密算法越复杂越影响服务效率


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-11-25 11:31 

注册: 2007-02-15 6:26
帖子: 356
送出感谢: 0 次
接收感谢: 1
md5 表面上看是不能解密的。其实是最容易解密的。

如:password = "ab5ftg3d5de8hg.....";//md5('my very secure password - you do not know it :) ')

你只要用一个 while loop 可能不到10 分钟便可解密。

用2个MD5 可能好一点,但是事先知道你用了2个MD5,用上述的 while loop 解密 ,起结果与 一个MD5 一样脆弱。

因此一个好的密码,不能只是 md5('my5pass') 之类。最好有什么东西,防止 while loop 来解密。

最近看到一则新闻云:一中学生用魔方理论加密。

曼有意思的。这个立方体看起来不容易归位,若用电脑来计算,可能并不难解掉。

但是立方体的位移功能,倒是很有意思。如果加上不确定的转动方案(如:每次转动,根据上一次的结果),可能会设计出一个很好的密码系统。


_________________
2007:琉璃地,旃檀林。心心作。念念是。


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-11-25 11:35 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
sqlfm 写道:
md5 表面上看是不能解密的。其实是最容易解密的。

如:password = "ab5ftg3d5de8hg.....";//md5('my very secure password - you do not know it :) ')

你只要用一个 while loop 可能不到10 分钟便可解密。

用2个MD5 可能好一点,但是事先知道你用了2个MD5,用上述的 while loop 解密 ,起结果与 一个MD5 一样脆弱。

因此一个好的密码,不能只是 md5('my5pass') 之类。最好有什么东西,防止 while loop 来解密。

最近看到一则新闻云:一中学生用魔方理论加密。

曼有意思的。这个立方体看起来不容易归位,若用电脑来计算,可能并不难解掉。

但是立方体的位移功能,倒是很有意思。如果加上不确定的转动方案(如:每次转动,根据上一次的结果),可能会设计出一个很好的密码系统。


很怀疑你有没有尝试过
我不信10分钟搞定


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-11-26 11:30 
头像

注册: 2007-09-28 2:33
帖子: 47
地址: 重庆
送出感谢: 0 次
接收感谢: 0 次
BigSnake.NET 写道:
sqlfm 写道:
md5 表面上看是不能解密的。其实是最容易解密的。

如:password = "ab5ftg3d5de8hg.....";//md5('my very secure password - you do not know it :) ')

你只要用一个 while loop 可能不到10 分钟便可解密。

用2个MD5 可能好一点,但是事先知道你用了2个MD5,用上述的 while loop 解密 ,起结果与 一个MD5 一样脆弱。

因此一个好的密码,不能只是 md5('my5pass') 之类。最好有什么东西,防止 while loop 来解密。

最近看到一则新闻云:一中学生用魔方理论加密。

曼有意思的。这个立方体看起来不容易归位,若用电脑来计算,可能并不难解掉。

但是立方体的位移功能,倒是很有意思。如果加上不确定的转动方案(如:每次转动,根据上一次的结果),可能会设计出一个很好的密码系统。


很怀疑你有没有尝试过
我不信10分钟搞定


:D :D
如果LZ有10分钟能解MD5的程序 麻烦发出来共享下
嘎嘎

1次MD5之后就是32位了哟 然后你用循环解32位的MD5
额~~~~这个


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-11-26 11:37 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
任何有可以得到确定密文的加密方法,都无法应对穷举破解


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译