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; }
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); } }
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; }