帮忙转换成C#,谢谢!!

mzwww 2019-01-17 05:00:44
帮忙转换成C#,谢谢!!
void CClientRegicode::EncodeBase64MSG(char *Src,int Src_len,char *base64code)
{
int len,i,work_Len;
unsigned char* psrc ;
unsigned char Beign;
unsigned char rest ;
const char szBase64TableOld2[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; //$ 标准
const char szBase64TableOld [] = {'P','Q','R','S','T','U','a','b','c','d','e','f','g','h','A','B','C','D','E','K','L','M','y','z',
'0','1','N','O','V','W','X','Y','Z','i','j','k','q','r','s','5','6','7','8','9','t','u','v','w',
'x','2','3','4','+','/','F','G','H','I','J','l','m','n','o','p'}; //- * 变化
char szBase64Table [] = {'P','Q','R','S','T','U','a','b','c','d','e','f','g','h','A','B','C','D','E','K','L','M','y','z',
'0','1','N','O','V','W','X','Y','Z','i','j','k','q','r','s','5','6','7','8','9','t','u','v','w',
'x','2','3','4','+','/','F','G','H','I','J','l','m','n','o','p'}; //- * 变化
work_Len = Src_len;

if (Src[4]=='-'||Src[4]=='*'||Src[4]=='$')
{
psrc = (unsigned char*)&Src[5]; work_Len=work_Len-5;
*base64code=Src[0];base64code++;
*base64code=Src[1];base64code++;
*base64code=Src[2];base64code++;
*base64code=Src[3];base64code++;
*base64code=Src[4];base64code++;
i=atoi(Src) % 63;
if (i!=0)
{
if (Src[4]=='$')
{
memcpy(szBase64Table ,&szBase64TableOld2[i],64-i);
memcpy(&szBase64Table[64-i],szBase64TableOld2 ,i);
}
else
{
memcpy(szBase64Table ,&szBase64TableOld[i],64-i);
memcpy(&szBase64Table[64-i],szBase64TableOld ,i);
}
}
if (Src[4]=='*')
{
char buf[3];buf[2]=0;
len =1;*psrc++;
for (i = 1; i < work_Len ; i=i+2)
{
memcpy(buf,&Src[5+i],2);
*psrc=(unsigned char) (strtoul(buf,NULL,16));
*psrc++;
len++;
}
psrc = (unsigned char*)&Src[5];
work_Len=len;
}
}
else
psrc = (unsigned char*)Src;

rest=0;
Beign=0;
len = 0;
for (i = 0; i < work_Len ; i ++)
{
do
{
*base64code=szBase64Table[ ( Beign<<(6-rest) | *psrc>>(2+rest))&0x3f];
base64code++;
len++;
Beign=*psrc;
rest+=2;
if (rest==8)
{
rest=0;

}
} while (rest>=6);
psrc++;
}
if (rest!=0)
{
*base64code=szBase64Table[ ( Beign<<(6-rest) )&0x3f];
base64code++;
len++;
}
if (((len/4)*4)!=len)
for (i=0;i<((len/4)+1)*4-len;i++)
{
*base64code='=';
base64code++;
}
*base64code = '\0';
}
...全文
469 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2019-01-23
  • 打赏
  • 举报
回复
让你贴出解码程序,你却不肯(或许你也没有) 但至少应贴出几组明文和编码结果,以便验证转换后的代码的正确性 如果还要我们在 C++ 中补全代码进行验证的话,应该是没有人会去做的 这段代码是: 1、根据传入数据的前五个字节的内容修改编码对照表和自身 2、将传入传的内容(前5个字节有变化)用修改后的编码对照表做 base64 运算 3、合并两段结果
mzwww 2019-01-23
  • 打赏
  • 举报
回复
帮忙转换下,谢谢!
mzwww 2019-01-23
  • 打赏
  • 举报
回复
void CClientRegicode::EncodeBase64MSG(char *Src,int Src_len,char *base64code)
{
int len,i,work_Len;
unsigned char* psrc ;
unsigned char Beign;
unsigned char rest ;
const char szBase64TableOld2[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; //$ 标准
const char szBase64TableOld [] = {'P','Q','R','S','T','U','a','b','c','d','e','f','g','h','A','B','C','D','E','K','L','M','y','z',
'0','1','N','O','V','W','X','Y','Z','i','j','k','q','r','s','5','6','7','8','9','t','u','v','w',
'x','2','3','4','+','/','F','G','H','I','J','l','m','n','o','p'}; //- * 变化
char szBase64Table [] = {'P','Q','R','S','T','U','a','b','c','d','e','f','g','h','A','B','C','D','E','K','L','M','y','z',
'0','1','N','O','V','W','X','Y','Z','i','j','k','q','r','s','5','6','7','8','9','t','u','v','w',
'x','2','3','4','+','/','F','G','H','I','J','l','m','n','o','p'}; //- * 变化
work_Len = Src_len;

if (Src[4]=='-'||Src[4]=='*'||Src[4]=='$')
{
psrc = (unsigned char*)&Src[5]; work_Len=work_Len-5;
*base64code=Src[0];base64code++;
*base64code=Src[1];base64code++;
*base64code=Src[2];base64code++;
*base64code=Src[3];base64code++;
*base64code=Src[4];base64code++;
i=atoi(Src) % 63;
if (i!=0)
{
if (Src[4]=='$')
{
memcpy(szBase64Table ,&szBase64TableOld2[i],64-i);
memcpy(&szBase64Table[64-i],szBase64TableOld2 ,i);
}
else
{
memcpy(szBase64Table ,&szBase64TableOld[i],64-i);
memcpy(&szBase64Table[64-i],szBase64TableOld ,i);
}
}
if (Src[4]=='*')
{
char buf[3];buf[2]=0;
len =1;*psrc++;
for (i = 1; i < work_Len ; i=i+2)
{
memcpy(buf,&Src[5+i],2);
*psrc=(unsigned char) (strtoul(buf,NULL,16));
*psrc++;
len++;
}
psrc = (unsigned char*)&Src[5];
work_Len=len;
}
}
else
psrc = (unsigned char*)Src;

rest=0;
Beign=0;
len = 0;
for (i = 0; i < work_Len ; i ++)
{
do
{
*base64code=szBase64Table[ ( Beign<<(6-rest) | *psrc>>(2+rest))&0x3f];
base64code++;
len++;
Beign=*psrc;
rest+=2;
if (rest==8)
{
rest=0;

}
} while (rest>=6);
psrc++;
}
if (rest!=0)
{
*base64code=szBase64Table[ ( Beign<<(6-rest) )&0x3f];
base64code++;
len++;
}
if (((len/4)*4)!=len)
for (i=0;i<((len/4)+1)*4-len;i++)
{
*base64code='=';
base64code++;
}
*base64code = '\0';
}
PerDign 2019-01-22
  • 打赏
  • 举报
回复
帮忙顶下 加油
mzwww 2019-01-22
  • 打赏
  • 举报
回复
求帮助!!!!!!
VS_YYDS 2019-01-22
  • 打赏
  • 举报
回复
楼主麻烦用代码展现出来,不好看
mzwww 2019-01-21
  • 打赏
  • 举报
回复
顶下!!!!!!!!!!!!!!
threenewbee 2019-01-18
  • 打赏
  • 举报
回复
引用 2 楼 wangyx92528 的回复:
这个方法你试试,应该是一样的

using System.Runtime.InteropServices;
using System.Security;

namespace System
{
    //
    // 摘要:
    //     将一个基本数据类型转换为另一个基本数据类型。
    public static class Convert

        //
        // 摘要:
        //     将 8 位无符号整数的数组转换为其用 Base64 数字编码的等效字符串表示形式。
        //
        // 参数:
        //   inArray:
        //     一个 8 位无符号整数数组。
        //
        // 返回结果:
        //     inArray 的内容的字符串表示形式,以 Base64 表示。
        //
        // 异常:
        //   T:System.ArgumentNullException:
        //     inArray 为 null。
        public static string ToBase64String(byte[] inArray);
正解,主要是编码不知道是哪一种,你可以 System.Text.Encoding.XXX.GetBytes() 几种编码都试验下
mzwww 2019-01-18
  • 打赏
  • 举报
回复
@wangyx92528 ,代码没贴上来?
wangyx92528 2019-01-17
  • 打赏
  • 举报
回复
这个方法你试试,应该是一样的

using System.Runtime.InteropServices;
using System.Security;

namespace System
{
//
// 摘要:
// 将一个基本数据类型转换为另一个基本数据类型。
public static class Convert

//
// 摘要:
// 将 8 位无符号整数的数组转换为其用 Base64 数字编码的等效字符串表示形式。
//
// 参数:
// inArray:
// 一个 8 位无符号整数数组。
//
// 返回结果:
// inArray 的内容的字符串表示形式,以 Base64 表示。
//
// 异常:
// T:System.ArgumentNullException:
// inArray 为 null。
public static string ToBase64String(byte[] inArray);
  • 打赏
  • 举报
回复
看名字是转化成base64字符串,你直接拿base64的结果测试下是否一致

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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