<Window x:Class="RegistrationCode.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:RegistrationCode" mc:Ignorable="d" Title="生成注册码" Height="160" Width="600"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="3*"></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <TextBox x:Name="txt_RegistrationCode" Grid.Column="0" Margin="20,0,20,0" Height="30" FontSize="14" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Center" Text=""/> <Button x:Name="btn_Registration" Click="Btn_Registration_Click" Grid.Column="1" Margin="20,0,20,0" Content="生成注册码" Height="30" VerticalContentAlignment="Center" Background="White"/> </Grid> </Window>
public class Register
{
/// <summary> /// 取得设备硬盘的卷标号 /// </summary> /// <returns></returns> public static string GetDiskVolumeSerialNumber() { ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\""); disk.Get(); return disk.GetPropertyValue("VolumeSerialNumber").ToString(); } /// <summary> /// 获得CPU的序列号 /// </summary> /// <returns></returns> public static string getCpu() { string strCpu = null; ManagementClass myCpu = new ManagementClass("win32_Processor"); ManagementObjectCollection myCpuConnection = myCpu.GetInstances(); foreach (ManagementObject myObject in myCpuConnection) { strCpu = myObject.Properties["Processorid"].Value.ToString(); break; } return strCpu; } }
public class AESLock
{
/// <summary>
/// AES 加密
/// </summary>
/// <param name="str">明文(待加密)</param>
/// <param name="key">密文</param>
/// <returns></returns>
public string AesEncrypt(string str, string key)
{
if (string.IsNullOrEmpty(str)) return null;
Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
RijndaelManaged rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
ICryptoTransform cTransform = rm.CreateEncryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray);
}
/// <summary>
/// AES 解密
/// </summary>
/// <param name="str">明文(待解密)</param>
/// <param name="key">密文</param>
/// <returns></returns>
public string AesDecrypt(string str, string key)
{
if (string.IsNullOrEmpty(str)) return null;
Byte[] toEncryptArray = Convert.FromBase64String(str);
RijndaelManaged rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
ICryptoTransform cTransform = rm.CreateDecryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Encoding.UTF8.GetString(resultArray);
}
}
public class DESLock
{
private const int RsaKeySize = 2048; private const string publicKeyFileName = "RSA.Pub"; private const string privateKeyFileName = "RSA.Private"; /// <summary> ///在给定路径中生成XML格式的私钥和公钥。 /// </summary> public void GenerateKeys(string path) { using (var rsa = new RSACryptoServiceProvider(RsaKeySize)) { try { // 获取私钥和公钥。 var publicKey = rsa.ToXmlString(false); var privateKey = rsa.ToXmlString(true); // 保存到磁盘 File.WriteAllText(Path.Combine(path, publicKeyFileName), publicKey); File.WriteAllText(Path.Combine(path, privateKeyFileName), privateKey); //Console.WriteLine(string.Format("生成的RSA密钥的路径: {0}\\ [{1}, {2}]", path, publicKeyFileName, privateKeyFileName)); } finally { rsa.PersistKeyInCsp = false; } } } /// <summary> /// 用给定路径的RSA公钥文件加密纯文本。 /// </summary> /// <param name="plainText">要加密的文本</param> /// <param name="pathToPublicKey">用于加密的公钥路径.</param> /// <returns>表示加密数据的64位编码字符串.</returns> public string Encrypt(string plainText, string pathToPublicKey) { using (var rsa = new RSACryptoServiceProvider(RsaKeySize)) { try { //加载公钥 var publicXmlKey = File.ReadAllText(pathToPublicKey); rsa.FromXmlString(publicXmlKey); var bytesToEncrypt = System.Text.Encoding.Unicode.GetBytes(plainText); var bytesEncrypted = rsa.Encrypt(bytesToEncrypt, false); return Convert.ToBase64String(bytesEncrypted); } finally { rsa.PersistKeyInCsp = false; } } } /// <summary> /// Decrypts encrypted text given a RSA private key file path.给定路径的RSA私钥文件解密 加密文本 /// </summary> /// <param name="encryptedText">加密的密文</param> /// <param name="pathToPrivateKey">用于加密的私钥路径.</param> /// <returns>未加密数据的字符串</returns> public string Decrypt(string encryptedText, string pathToPrivateKey) { using (var rsa = new RSACryptoServiceProvider(RsaKeySize)) { try { var privateXmlKey = File.ReadAllText(pathToPrivateKey); rsa.FromXmlString(privateXmlKey); var bytesEncrypted = Convert.FromBase64String(encryptedText); var bytesPlainText = rsa.Decrypt(bytesEncrypted, false); return System.Text.Encoding.Unicode.GetString(bytesPlainText); } finally { rsa.PersistKeyInCsp = false; } } } }
public class SHALock
{
public string SHAmd5Encrypt(string normalTxt)
{
var bytes = Encoding.Default.GetBytes(normalTxt);//求Byte[]数组
var Md5 = new MD5CryptoServiceProvider();
var encryptbytes = Md5.ComputeHash(bytes);//求哈希值
return Base64To16(encryptbytes);//将Byte[]数组转为净荷明文(其实就是字符串)
}
public string SHA1Encrypt(string normalTxt)
{
var bytes = Encoding.Default.GetBytes(normalTxt);
var SHA = new SHA1CryptoServiceProvider();
var encryptbytes = SHA.ComputeHash(bytes);
return Base64To16(encryptbytes);
}
public string SHA256Encrypt(string normalTxt)
{
var bytes = Encoding.Default.GetBytes(normalTxt);
var SHA256 = new SHA256CryptoServiceProvider();
var encryptbytes = SHA256.ComputeHash(bytes);
return Base64To16(encryptbytes);
}
public string SHA384Encrypt(string normalTxt)
{
var bytes = Encoding.Default.GetBytes(normalTxt);
var SHA384 = new SHA384CryptoServiceProvider();
var encryptbytes = SHA384.ComputeHash(bytes);
return Base64To16(encryptbytes);
}
public string SHA512Encrypt(string normalTxt)
{
var bytes = Encoding.Default.GetBytes(normalTxt);
var SHA512 = new SHA512CryptoServiceProvider();
var encryptbytes = SHA512.ComputeHash(bytes);
return Base64To16(encryptbytes);
}
private string Base64To16(byte[] buffer)
{
string md_str = string.Empty;
for (int i = 0; i < buffer.Length; i++)
{
md_str += buffer[i].ToString("x2");
}
return md_str;
}
}
<Window x:Class="ImportRegistrationCode.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:ImportRegistrationCode" mc:Ignorable="d" Title="MainWindow" Height="300" Width="600"> <Grid> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition Height="3*"></RowDefinition> </Grid.RowDefinitions> <Grid Grid.Row="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="3*"></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <TextBox x:Name="txt_importRegistrationCode" Grid.Column="0" Margin="20,0,20,0" Height="30" FontSize="14" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Center" Text=""/> <Button x:Name="btn_importRegistration" Grid.Column="1" Margin="20,0,20,0" Content="导入注册码" Height="30" VerticalContentAlignment="Center" Background="White"/> </Grid> <!--<Grid Grid.Row="1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="3*"></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <RichTextBox Margin="20,10,20,10" Grid.Column="0" ></RichTextBox> <Button x:Name="btn_AllimportRegistration" Grid.Column="1" Margin="20,0,20,0" Content="批量导入注册码" Height="30" VerticalContentAlignment="Center" Background="White"/> </Grid>--> </Grid> </Window>