WPFライセンス

 
<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> 

 

おすすめ

転載: www.cnblogs.com/CityOfThousandFires/p/11832708.html