C# 生成解锁密钥

C# 生成解锁密钥,c#,.net,wix,C#,.net,Wix,我正在使用WIX和C#自定义操作解锁产品。 我们计划从旧式修改解锁钥匙(34450-ee33-8736333-30393)。 你能告诉我哪种算法适合这个吗?提供在线资料来了解这一点将非常有用。 如果您需要任何信息,请告诉我。您可以使用System.Net.Security和System.Net.Security.cryptography中的各种加密类。我特别使用了像MD5CryptoServiceProvider这样的类来计算二进制块或文件的散列,并输出一个类似于您提到的摘要。然后,您可以匹配系

我正在使用WIX和C#自定义操作解锁产品。 我们计划从旧式修改解锁钥匙(34450-ee33-8736333-30393)。 你能告诉我哪种算法适合这个吗?提供在线资料来了解这一点将非常有用。

如果您需要任何信息,请告诉我。

您可以使用System.Net.Security和System.Net.Security.cryptography中的各种加密类。我特别使用了像MD5CryptoServiceProvider这样的类来计算二进制块或文件的散列,并输出一个类似于您提到的摘要。然后,您可以匹配系统生成的与用户输入的密钥,以激活/解锁您的软件

以下是我的一项密码学工作的示例:

                byte[] bytes = System.IO.File.ReadAllBytes(ofd.FileName);
            byte[] checksum = null;
            if (optMD5.IsChecked==true)
            {
                MD5 md5 = System.Security.Cryptography.MD5.Create();//.MD5CryptoServiceProvider();
                checksum=new byte[1024];
                checksum = md5.ComputeHash(bytes);
            }
            else if (optSHA1.IsChecked == true)
            {
                SHA1 sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider();
                checksum = sha1.ComputeHash(bytes);
            }
            else {
                MessageBox.Show("No option selected.");
                return;
            }
            //string schecksum = BitConverter.ToString(checksum);//ASCIIEncoding.ASCII.GetString(checksum);

            // Create a new Stringbuilder to collect the bytes
            // and create a string.
            StringBuilder sb = new StringBuilder();

            // Loop through each byte of the hashed data 
            // and format each one as a hexadecimal string.
            for (int i = 0; i < checksum.Length; i++)
            {
                sb.Append(checksum[i].ToString("x2"));
            }

            // Return the hexadecimal string.
            //return sb.ToString();

            MessageBox.Show("checksum-1 = " + sb.ToString() + Environment.NewLine + "checksum-2 = " + txtChecksum.Text);
byte[]bytes=System.IO.File.ReadAllBytes(ofd.FileName);
字节[]校验和=null;
if(optMD5.IsChecked==true)
{
MD5 MD5=System.Security.Cryptography.MD5.Create();/.MD5CryptoServiceProvider();
校验和=新字节[1024];
校验和=md5.ComputeHash(字节);
}
else if(optSHA1.IsChecked==true)
{
SHA1 SHA1=new System.Security.Cryptography.SHA1CryptoServiceProvider();
校验和=sha1.ComputeHash(字节);
}
否则{
MessageBox.Show(“未选择任何选项”);
返回;
}
//字符串schecksum=BitConverter.ToString(校验和)//ascienceoding.ASCII.GetString(校验和);
//创建新的Stringbuilder以收集字节
//并创建一个字符串。
StringBuilder sb=新的StringBuilder();
//循环遍历散列数据的每个字节
//并将每个字符串格式化为十六进制字符串。
for(int i=0;i