一段C语言加密字符串转换为pb,得到的结果不对,求助

tomorrower 2012-05-29 11:20:22
c源代码:
int jiami(char *source,char *target)
{
unsigned char def_str[18]={1,9,7,4,1,0,2,1,1,9,7,4,'0',3,3,'0',0};
unsigned char temp1[18];
unsigned int i,len;

unsigned char x=0;

strcpy((char *)temp1,source);
len=strlen((char *)temp1);
for(i=len;i<16;i++)
temp1[i]=0;
for(i=0;i<16;i++)
temp1[i]=temp1[i]^def_str[i];

for(i=0;i<16;i++)
x=x+temp1[i];

temp1[0]=temp1[0]+x;
for(i=1;i<16;i++)
{
temp1[i]=temp1[i-1]+temp1[i]+x;
x=temp1[i-1]+temp1[i];
}
temp1[0]=temp1[15]+temp1[0]+x;
for(i=0;i<16;i++)
{
if(temp1[i]>126)
temp1[i]=temp1[i]-126;
if(temp1[i]>126)
temp1[i]=temp1[i]-126;
if(temp1[i]<=32)
temp1[i]=temp1[i]+33;
}
temp1[16]=0;
strcpy(target,(char *)temp1);
return 0;
}

我翻译的pb函数,其中mm是当作行数的参数输入:
Int def_str[18] = {1,9,7,4,1,0,2,1,1,9,7,4,0,3,3,0,0}
Int temp1[18]
Int i,Len,j

String ls_return

Long X = 0

//strcpy((char *)temp1,source);
//len=strlen((char *)temp1);
Len = Len(mm)

FOR j = 1 To Len
temp1[j] = asc(Mid(mm,j,1))
NEXT

//For(i = Len;i < 16;i++)
FOR i = Len+1 To 16
temp1[i] = 0
NEXT

//For(i = 0;i < 16;i++)
FOR i = 1 To 16
temp1[i] = temp1[i]^def_str[i]
NEXT
//For(i = 0;i < 16;i++)

FOR i = 1 To 16
X = X+Long(temp1[i])
NEXT

temp1[1] = temp1[1]+X

//For(i = 1;i < 16;i++)
FOR i = 2 To 16
temp1[i] = temp1[i-1]+temp1[i]+X;
X = temp1[i-1]+temp1[i];
NEXT

temp1[1] = temp1[16]+temp1[1]+X;
//For(i = 0;i < 16;i++)
FOR i = 1 To 16
If(temp1[i] > 126) THEN
temp1[i] = temp1[i]-126

ElseIf(temp1[i] > 126) THEN
temp1[i] = temp1[i]-126

ElseIf(temp1[i] <= 32) THEN
temp1[i] = temp1[i]+33

END IF

NEXT
temp1[17] = 0;

//strcpy(target,(char *)temp1);

FOR i = 1 To 16
ls_return = ls_return+Char(temp1[i] )
NEXT

RETURN ls_return

得到的加密后的字符串不一致,求助
...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomorrower 2012-07-06
  • 打赏
  • 举报
回复
谢谢,我就是用c代码使用VC编译为dll在pb中调用的
阿哲快跑 2012-06-11
  • 打赏
  • 举报
回复
楼上的方法可以。
my_aa 2012-06-09
  • 打赏
  • 举报
回复
那你还不如把C语言的代码编译成dll或pbx供PB调用
lqn2011 2012-06-08
  • 打赏
  • 举报
回复
这样转换不行吧。 C中是地址,转换成pb中的话,一般我们用的是byte。 pb中的精度值跟c的差别有点大。 建议自己采用pb的方式进行加密。

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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