codelg PHP,求大神帮忙把php代码翻译成C#的

function encrypted_id($dfsid) {

$key ="3go8&$8*3*3h0k(2)2";

$key_len = strlen($key);

for($i = 0; $i 

$dfsid[$i] = $dfsid[$i] ^ $key[$i % $key_len];

}

$raw_code = base64_encode(md5($dfsid, true));

$code = str_replace(array("/", "+"), array("_", "-"), $raw_code);

return $code;

}

echo encrypted_id("1255642278953624");

这是php代码,帮忙翻译成C#的。

下面是本人本人写的代码,但是转码后的结果不一致。

public string encrypted(string id)

{

string key = "3go8&$8*3*3h0k(2)2";

int key_len = key.Length;

int length = id.Length;

StringBuilder sb = new StringBuilder();

for (int i = 0; i 

sb.Append((id[i] ^ key[i % key_len]).ToString());

}

//转换成md5

string md5String =FormsAuthentication.HashPasswordForStoringInConfigFile(sb.ToString(), "md5");

//转换成base64

byte[] byteArray = System.Text.Encoding.Default.GetBytes(md5String);

string content = Convert.ToBase64String(byteArray);

//替换

string code = content.Replace("/","_");

code = code.Replace("+","-");

return code;

}

正确的话,如 id为 1255642278953624 加密后为WV3B2aSwkN52NLLGcFT9Yw==

但是本人解码出来的结果是  NjUyMzlGRkUxMDI4QTQzNEEwRTUzNDg2M0U5MEZGRjg=

有没有大神帮忙解答一下的

解决方案

30

static void Main(string[] args)

{

var id = "1255642278953624";

string key = "3go8&$8*3*3h0k(2)2";

int key_len = key.Length;

int length = id.Length;

char[] ids = id.ToArray();

//StringBuilder sb = new StringBuilder();

for (int i = 0; i 

{

ids[i] = (char)(id[i] ^ key[i % key_len]);

//sb.Append((id[i] ^ key[i % key_len]).ToString());

}

//转换成base64

byte[] byteArray = System.Text.Encoding.Default.GetBytes(ids);

MD5 md5 = new MD5CryptoServiceProvider();

byte[] output = md5.ComputeHash(byteArray);

var base64String = Convert.ToBase64String(output);

//base64String = base64String.Replace("/", "_");

//base64String = base64String.Replace("+", "-");

Console.WriteLine(base64String);

Console.ReadLine();

}

最后输出是WV3B2aSwkN52NLLGcFT9Yw==

20

static void Main(string[] args)

{

var p = encrypted("1255642278953624");

Console.WriteLine(p); //WV3B2aSwkN52NLLGcFT9Yw==

}

public static string encrypted(string id)

{

string key = "3go8&$8*3*3h0k(2)2";

int key_len = key.Length;

var byteArray = id.Select((x, i) => (byte)(x ^ key[i % key_len])).ToArray();

MD5 md5 = new MD5CryptoServiceProvider();

byte[] output = md5.ComputeHash(byteArray);

var base64String = Convert.ToBase64String(output);

return base64String;

}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求大神帮忙把php代码翻译成C#的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值