コード例 #1
0
        private void btnDesEncrypt_Click(object sender, EventArgs e)
        {
            string plainText = txt_des_plain.Text.Trim();
            string cipher    = string.Empty;

            byte[] key         = GetDesKeyBytes();
            var    cipherMode  = (CipherMode)Enum.Parse(typeof(CipherMode), cbox_des_cipher_mode.SelectedItem.ToString());
            var    paddingMode = (PaddingMode)Enum.Parse(typeof(PaddingMode), cbox_des_padding_mode.SelectedItem.ToString());

            if (radio_des_type_1des.Checked)
            {
                Javirs.Common.Security.DesEncodeDecode des = new Javirs.Common.Security.DesEncodeDecode(
                    Encoding.ASCII.GetString(key),
                    cipherMode,
                    paddingMode);
                var buff = des.DesEncrypt(GetDesPlainEncoding().GetBytes(plainText));
                cipher = GetDesCipherEncode().Encode(buff);
            }
            else if (radio_des_type_3des.Checked)
            {
                MemoryStream mStream = new MemoryStream();
                TripleDESCryptoServiceProvider tripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider();
                tripleDESCryptoServiceProvider.Key     = key;
                tripleDESCryptoServiceProvider.Padding = paddingMode; //补位
                tripleDESCryptoServiceProvider.Mode    = cipherMode;  //CipherMode.CBC
                CryptoStream cStream = new CryptoStream(mStream,
                                                        tripleDESCryptoServiceProvider.CreateEncryptor(),
                                                        CryptoStreamMode.Write);

                byte[] toEncrypt = Encoding.UTF8.GetBytes(plainText);

                cStream.Write(toEncrypt, 0, toEncrypt.Length);
                cStream.FlushFinalBlock();

                byte[] ret = mStream.ToArray();

                cStream.Close();
                mStream.Close();
                cipher = GetDesCipherEncode().Encode(ret);
            }
            else
            {
                var base64Res = Javirs.Common.Security.TripleDesEncodeDecode.TwiceDesEncrypt(key.Byte2HexString(), plainText);
                cipher = GetDesCipherEncode().Encode(Convert.FromBase64String(base64Res));
            }
            txt_des_cipher.Text = cipher;
        }
コード例 #2
0
        public static bool DesEncode(string plainText, out string cipherText)
        {
            string secret = "8FD018F7186343AA84D2538769F6578A";

            try
            {
                var    des    = new Javirs.Common.Security.DesEncodeDecode(secret, System.Security.Cryptography.CipherMode.ECB, System.Security.Cryptography.PaddingMode.PKCS7, true);
                string base64 = des.DesEncrypt(plainText);
                byte[] bytes  = Convert.FromBase64String(base64);
                cipherText = bytes.Byte2HexString();
                return(true);
            }
            catch (Exception ex)
            {
                cipherText = null;
                Log.Error("DES加密失败", ex);
                return(false);
            }
        }
コード例 #3
0
        private void btnDesDecrypt_Click(object sender, EventArgs e)
        {
            byte[]      cipherBytes = GetDesCipherEncode().Decode(txt_des_cipher.Text.Trim());
            byte[]      key         = GetDesKeyBytes();
            CipherMode  cipherMode  = (CipherMode)Enum.Parse(typeof(CipherMode), cbox_des_cipher_mode.SelectedItem.ToString());
            PaddingMode paddingMode = (PaddingMode)Enum.Parse(typeof(PaddingMode), cbox_des_padding_mode.SelectedItem.ToString());

            if (radio_des_type_1des.Checked)
            {
                Javirs.Common.Security.DesEncodeDecode des = new Javirs.Common.Security.DesEncodeDecode(
                    txt_des_key.Text.Trim(),
                    cipherMode,
                    paddingMode,
                    radio_des_key_format_hex.Checked);
                cipherBytes = des.DesDecrypt(cipherBytes);
            }
            else if (radio_des_type_3des.Checked)
            {
                MemoryStream msDecrypt = new MemoryStream(cipherBytes);

                TripleDESCryptoServiceProvider tripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider();
                tripleDESCryptoServiceProvider.Key     = key;
                tripleDESCryptoServiceProvider.Padding = paddingMode; //补位
                tripleDESCryptoServiceProvider.Mode    = cipherMode;  //CipherMode.CBC
                CryptoStream csDecrypt = new CryptoStream(msDecrypt,
                                                          tripleDESCryptoServiceProvider.CreateDecryptor(),
                                                          CryptoStreamMode.Read);

                cipherBytes = new byte[cipherBytes.Length];

                csDecrypt.Read(cipherBytes, 0, cipherBytes.Length);
            }
            else
            {
                var base64Res = Javirs.Common.Security.TripleDesEncodeDecode.TwiceDesDescrypt(key.Byte2HexString(), Convert.ToBase64String(cipherBytes));
                cipherBytes = Convert.FromBase64String(base64Res);
            }
            string plain = GetDesPlainEncoding().GetString(cipherBytes);

            txt_des_plain.Text = plain;
        }