急,请帮我这段C程序转成PHP程序

yicikou 2004-01-13 11:13:44
int password( char *to, unsigned int size, const char *password )
{

unsigned long hash_res[2]={0};
register unsigned long nr=45345333L, add=8, nr2=0x12345678L;
unsigned long tmp = 0;

if ( size < 17 )
{
return -1;
}
for (; *password ; password++)
{
if (*password == ' ' || *password == '\t')
{
continue; /* skipp space in password */
}
tmp= (unsigned long) (unsigned char) *password;
nr^= (((nr & 63)+add)*tmp)+ (nr << 8);
nr2+=(nr2 << 8) ^ nr;
add+=tmp;
}
hash_res[0]=nr & (((unsigned long) 1L << 31) -1L); /* Don't use sign bit (str2int) */;
hash_res[1]=nr2 & (((unsigned long) 1L << 31) -1L);

sprintf(to,"%08lx%08lx",hash_res[0],hash_res[1]);
return 0;

}
...全文
47 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinxin1982 2004-01-13
  • 打赏
  • 举报
回复
斑竹不好意思,没看到你写的,嘿嘿,班门弄斧了,不好意思,别山窝的贴子阿
xinxin1982 2004-01-13
  • 打赏
  • 举报
回复
大概写了一下,在这里也没法看
对了,你那个nr^...不好意思,我的c很烂,也忘了好久
呵呵,php是不分那种变量的,目前
变量前面+$就可以了
剩下和c差不多,类的方面弱点
function password($to,$size,$password){
$long hash_res="";
$nr=45345333L;
$add=8;
$nr2=0x12345678L;
$tmp=0;
if($size<17){
return("-1");
}
for(;$password;$password++){
if ($password==''||$password=='\t'){
continue; /* skipp space in password */
}
$tmp=$password;
$nr^= ((($nr&63)+add)$tmp)+($nr<<8);
$nr2+=($nr2 << 8)^$nr;
$add+=$tmp;
}
$hash_res[0]=nr & (((unsigned long) 1L << 31) -1L); /* Don't use sign bit (str2int) */;
$hash_res[1]=nr2 & (((unsigned long) 1L << 31) -1L);

sprintf($to,"%08lx%08lx",$hash_res[0],$hash_res[1]);
return 0;

}
yicikou 2004-01-13
  • 打赏
  • 举报
回复
先谢谢先
xuzuning 2004-01-13
  • 打赏
  • 举报
回复
function password(&$to,$size,$password )
{
$hash_res = array();
$nr = 45345333;
$add = 8;
$nr2 = 0x12345678;
$tmp = 0;

if ( $size < 17 )
{
return -1;
}
for ($i=0; $i<strlen($password) ; $i++)
{
if ($password[$i] == ' ' || $password[$i] == "\t")
{
continue; /* skipp space in password */
}
$tmp= $password[$i];
$nr ^= ((($nr & 63)+$add)*$tmp)+ ($nr << 8);
$nr2 += ($nr2 << 8) ^ $nr;
$add += $tmp;
}
$hash_res[0] = $nr & ((1 << 31) -1); /* Don't use sign bit (str2int) */;
$hash_res[1] = $nr2 & ((1 << 31) -1);

$to = sprintf("%08x%08x",$hash_res[0],$hash_res[1]);
return 0;

}

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧