[C#] 纯文本查看 复制代码 using System;
using System.Text;
using System.Security.Cryptography;
namespace HelloWorldApplication
{
class HelloWorld
{
public static string I(string A_0)
{
string text = "";
try
{
byte[] bytes = Encoding.UTF8.GetBytes(A_0);
for (int i = 0; i < bytes.Length; i++)
{
text = text + bytes[i].ToString() + "_";
}
text = text.TrimEnd('_');
}
catch (Exception) when (double.TryParse(text, out double result) && result <= 0.0)
{
}
return text;
}
public static string G(string A_0)
{
return I(A_0.Substring(2, 7)) + I(A_0.Substring(6, 11)) + I(A_0.Substring(8, 7));
}
public static string J(string A_0)
{
using (MD5 md5 = MD5.Create())
{
byte[] inputBytes = Encoding.Unicode.GetBytes(A_0.Trim());
byte[] hashBytes = md5.ComputeHash(inputBytes);
return BitConverter.ToString(hashBytes);
}
}
static void Main(string[] args)
{
/* Write C# code in this online editor and run it. */
string input = "你的机器码";
string A_0 = G(input);
Console.WriteLine(A_0);
string time = "1701829232";
string a = "23010010100101001011" + A_0 + time;
string text = J(a);
Console.WriteLine(text);
string cdk = text.Substring(6, 17);
Console.WriteLine(cdk+"-"+time);
Console.ReadKey();
}
}
}
楼主写的太含糊了,研究了好久~,咋的也对不上,都要放弃了,发现落了一步,机器码g加密后前后都需拼接,也就是楼主第四步里面string a_ 那里,还有我的定义和楼主的不一样,我的是"23010010100101001011",可能是版本不同。j加密好复杂应该没有现成的工具,上边的代码是我根据源代码用gpt转换的等效C#代码,经测试可以在在线编译器上运行,得出的结果正确(跟论坛发码的大哥结果一致),时间戳time那里的数可以网上生成也可以用我的。最后希望对大家有帮助,研究的好累,大家给个赞~。 |