c# 使用DES加密和解密字符串

/// <summary>
       /// 使用DES加密字符串
       /// </summary>
       /// <param name="stringToEncrypt">待加密字符串</param>
       /// <param name="strKEY">8位字符加密密钥</param>
       /// <returns></returns>
        public static string EncryptStringByDES(string stringToEncrypt,string KEY)
        {
            if (string.IsNullOrEmpty(KEY)||Encoding.UTF8.GetBytes(KEY).Length!=8)
                KEY = "$Ap1bi$.";
            byte[] key = { };
            byte[] IV = { 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78 };
            try
            {
                key = Encoding.UTF8.GetBytes(KEY);
                using (DESCryptoServiceProvider oDESCrypto = new DESCryptoServiceProvider())
                {
                    byte[] inputByteArray = Encoding.UTF8.GetBytes(stringToEncrypt);
                    MemoryStream oMemoryStream = new MemoryStream();
                    CryptoStream oCryptoStream = new CryptoStream(oMemoryStream,
                    oDESCrypto.CreateEncryptor(key, IV), CryptoStreamMode.Write);
                    oCryptoStream.Write(inputByteArray, 0, inputByteArray.Length);
                    oCryptoStream.FlushFinalBlock();
                    return Convert.ToBase64String(oMemoryStream.ToArray());
                }
            }
            catch (Exception ex)
            {
 
                throw ex;
            }
        }
 
       /// <summary>
       /// 使用DES解密字符串
       /// </summary>
       /// <param name="stringToDecrypt">待解密字符串</param>
        /// <param name="strKEY">8位字符解密密钥</param>
       /// <returns></returns>
        public static string DecryptStringByDES(string stringToDecrypt, string KEY)
        {
            if (string.IsNullOrEmpty(KEY) || Encoding.UTF8.GetBytes(KEY).Length != 8)
                KEY = "$Apa1i$.";
            byte[] key = { };
            byte[] IV = { 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78 };
            stringToDecrypt = stringToDecrypt.Replace(" ", "+");
            byte[] inputByteArray = new byte[stringToDecrypt.Length];
 
 
            try
            {
                key = Encoding.UTF8.GetBytes(KEY);
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                inputByteArray = Convert.FromBase64String(stringToDecrypt);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(key, IV), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                Encoding encoding = Encoding.UTF8;
                return encoding.GetString(ms.ToArray());
            }
            catch (Exception ex)
            {
 
                throw ex;
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中,可以使用许多不同的加密算法来加密解密字符串。这里介绍两种常用的加密算法:AES 和 RSA。 AES 加密解密字符串的代码示例: ```csharp using System; using System.IO; using System.Security.Cryptography; using System.Text; class AesExample { static void Main() { string original = "Hello World!"; byte[] key = new byte[32]; byte[] iv = new byte[16]; using (Aes aes = Aes.Create()) { aes.Key = key; aes.IV = iv; // Encrypt the string to an array of bytes. byte[] encrypted = EncryptStringToBytes_Aes(original, aes.Key, aes.IV); // Decrypt the bytes to a string. string roundtrip = DecryptStringFromBytes_Aes(encrypted, aes.Key, aes.IV); //Display the original data and the decrypted data. Console.WriteLine("Original: {0}", original); Console.WriteLine("Round Trip: {0}", roundtrip); } } static byte[] EncryptStringToBytes_Aes(string plainText, byte[] Key, byte[] IV) { // Check arguments. if (plainText == null || plainText.Length <= 0) throw new ArgumentNullException("plainText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("IV"); byte[] encrypted; // Create an Aes object // with the specified key and IV. using (Aes aes = Aes.Create()) { aes.Key = Key; aes.IV = IV; // Create an encryptor to perform the stream transform. ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV); // Create the streams used for encryption. using (MemoryStream msEncrypt = new MemoryStream()) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) { //Write all data to the stream. swEncrypt.Write(plainText); } encrypted = msEncrypt.ToArray(); } } } // Return the encrypted bytes from the memory stream. return encrypted; } static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV) { // Check arguments. if (cipherText == null || cipherText.Length <= 0) throw new ArgumentNullException("cipherText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("IV"); // Declare the string used to hold // the decrypted text. string plaintext = null; // Create an Aes object // with the specified key and IV. using (Aes aes = Aes.Create()) { aes.Key = Key; aes.IV = IV; // Create a decryptor to perform the stream transform. ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); // Create the streams used for decryption. using (MemoryStream msDecrypt = new MemoryStream(cipherText)) { using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) { using (StreamReader srDecrypt = new StreamReader(csDecrypt)) { // Read the decrypted bytes from the decrypting stream // and place them in a string. plaintext = srDecrypt.ReadToEnd(); } } } } return plaintext; } } ``` RSA 加密解密字符串的代码示例: ```csharp using System; using System.Security.Cryptography; using System.Text; class RSACSPSample { static void Main() { // Create a new instance of RSACryptoServiceProvider RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); //Export the key information to an RSAParameters object. //Pass false to export the public key information or pass //true to export public and private key information. RSAParameters RSAParams = rsa.ExportParameters(false); //Create some data to sign and verify. byte[] data = Encoding.UTF8.GetBytes("Data to Sign"); try { //Sign the data using the private key. byte[] signature = SignData(data, RSAParams); //Verify the data using the public key. bool verified = VerifyData(data, signature, RSAParams); Console.WriteLine("Data verified: {0}", verified); } catch (CryptographicException e) { Console.WriteLine(e.Message); } } static byte[] SignData(byte[] data, RSAParameters RSAParams) { try { //Create a new instance of RSACryptoServiceProvider. using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { //Import the RSA key information. rsa.ImportParameters(RSAParams); //Sign the data. return rsa.SignData(data, SHA256.Create()); } } catch (CryptographicException e) { Console.WriteLine(e.Message); return null; } } static bool VerifyData(byte[] data, byte[] signature, RSAParameters RSAParams) { try { //Create a new instance of RSACryptoServiceProvider. using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { //Import the RSA key information. rsa.ImportParameters(RSAParams); //Verify the data. return rsa.VerifyData(data, SHA256.Create(), signature); } } catch (CryptographicException e) { Console.WriteLine(e.Message); return false; } } } ``` 请注意,这些示例代码只是演示如何使用 AES 和 RSA 加密解密字符串,并不一定适用于所有情况。在实际应用中,需要根据具体需求选择适当的加密算法和实现方式,并且需要采取额外的安全措施来保护加密密钥等敏感信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值