这个C++ Build函数,用VB.Net如何改写.

chpst 2005-05-16 09:40:50
我刚学VB.NET不久,菜啊!各位大侠帮帮忙
AnsiString DES_Encrypt(AnsiString s_Input)
{
int i_lsuse;
unsigned char PinDes[50],Pin[50];
AnsiString s_lsuse;
char string[10];

s_lsuse=Trim(s_Input);
if (s_lsuse.Length()%2==1)
s_lsuse="0"+s_lsuse;

memset(PinDes,0xff,16);
memset(Pin,0xff,16);
memcpy(Pin,"\x56\x35\x69\x13\x91\x02\x86\x59",8);
memcpy(Pin,(unsigned char*)(const char*)s_lsuse.c_str(),s_lsuse.Length());
// asc_hex((unsigned char*)(const char*)s_lsuse.c_str(),Pin,s_lsuse.Length()/2);
i_lsuse=ic_encrypt((char*)"hoteltes",(char *)Pin,8,(char *)PinDes);
s_lsuse="";
for (i_lsuse=0;i_lsuse<8;i_lsuse++)
{
itoa(PinDes[i_lsuse], string, 16);
s_lsuse=s_lsuse+AnsiString(string);
}
// s_lsuse=s_lsuse.SubString(1,4);
return s_lsuse;
}
...全文
111 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chpst 2005-06-21
  • 打赏
  • 举报
回复
以前的密码信息是以Des加密密文存在数据库里。
如果用自己VB.net的Des加密,不知什么原因加出来的密文不一样。
vb.net自带的Des类也不行。所以我就想用他原来的用MFC写的dll。
zjh135 2005-06-17
  • 打赏
  • 举报
回复
为什么了改呢,用C++多好啊?你感时毛吗??
Ninputer 2005-06-17
  • 打赏
  • 举报
回复
这个翻译不了,你必须彻底重写整个算法。
兔子-顾问 2005-05-16
  • 打赏
  • 举报
回复
memset(PinDes,0xff,16);
memset(Pin,0xff,16);
memcpy(Pin,"\x56\x35\x69\x13\x91\x02\x86\x59",8);
memcpy(Pin,(unsigned char*)(const char*)s_lsuse.c_str(),s_lsuse.Length
i_lsuse=ic_encrypt((char*)"hoteltes",(char *)Pin,8,(char *)PinDes);

memset可以用数组拷贝,拷贝前,尝试用Ctype转换类型或者用Encoding.Ascii.GetBytes转成字节数组后拷贝,
最好还是换用vb.net思路重新实现。
chpst 2005-05-16
  • 打赏
  • 举报
回复
自己up一下,
我写成了这样
Public Declare Auto Function ic_encrypt Lib "Mwic_32.dll" _
(ByRef key As Char(), ByRef ptrSource As Char(), ByVal msgLen As Integer, ByRef ptrDest As Char()) As Integer
Public Function DES_Encrypt(ByVal s_Input As String) As String
Dim i_lsuse As Integer
Dim PinDes(50) As Char, Pin(50) As Char, s_str(10) As Char
Dim s_lsuse As String
s_lsuse = Trim(s_Input)
If ((s_lsuse.Length() Mod 2) = 1) Then
s_lsuse = "0" & s_lsuse


End If

s_lsuse = Trim(s_lsuse) & "test"

Return s_lsuse
End Function

memset(PinDes,0xff,16);
memset(Pin,0xff,16);
memcpy(Pin,"\x56\x35\x69\x13\x91\x02\x86\x59",8);
memcpy(Pin,(unsigned char*)(const char*)s_lsuse.c_str(),s_lsuse.Length
i_lsuse=ic_encrypt((char*)"hoteltes",(char *)Pin,8,(char *)PinDes);
这几条要如何写!
没人会吗?

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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