Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#加密出错第2部分_C#_Encryption - Fatal编程技术网

C#加密出错第2部分

C#加密出错第2部分,c#,encryption,C#,Encryption,真的没有一个好的一周加密。让我解释一下我需要什么 我想将字符串值加密到文件 我想用C将文件内容解密回字符串# 我想这样做,而不必担心机器存储、用户存储或任何其他存储,也不必担心注册表等 我的应用程序中可以提供任何安全密钥 安全性不一定非得非常强,我的代码也很模糊 我只想要一个可移植的解决方案。我曾经尝试过RSA,但在发现在生产过程中丢失了某个密钥文件后,它并没有给我带来任何好处,因为我对该文件一无所知,也无法在开发人员的机器上找到它 请帮忙。你调查过这个问题吗 你有没有调查过这个问题 从埃里克的

真的没有一个好的一周加密。让我解释一下我需要什么

  • 我想将字符串值加密到文件
  • 我想用C将文件内容解密回字符串#
  • 我想这样做,而不必担心机器存储、用户存储或任何其他存储,也不必担心注册表等
  • 我的应用程序中可以提供任何安全密钥 安全性不一定非得非常强,我的代码也很模糊

    我只想要一个可移植的解决方案。我曾经尝试过RSA,但在发现在生产过程中丢失了某个密钥文件后,它并没有给我带来任何好处,因为我对该文件一无所知,也无法在开发人员的机器上找到它


    请帮忙。

    你调查过这个问题吗

    你有没有调查过这个问题

    从埃里克的回答看来,你可能把事情弄得比你必须做的更复杂了;在不必要时尝试非对称加密

    对于您正在描述的加密类型,您应该只需要将一些参数传递给加密和解密方法即可完成任务


    看一看CodeProject。它以一种简单的方式使用Rijndael算法,甚至包括读取/写入文件的代码。

    从Eric的回答来看,听起来你可能把事情弄得比你必须做的更复杂了;在不必要时尝试非对称加密

    对于您正在描述的加密类型,您应该只需要将一些参数传递给加密和解密方法即可完成任务


    看一看CodeProject。它以一种简单的方式使用Rijndael算法,甚至包括读取/写入文件的代码。

    这里有一些我经常使用的代码(改编自web上的源代码),它完全依赖于settings下存储在web.config/app.config中的密码短语。它使用三重des

     /// <summary>
            /// Encrypts the string.
            /// </summary>
            /// <param name="text">The text.</param>
            /// <returns>Encrypted string</returns>
            public string EncryptString(string text)
            {
                // Locals
                var passphrase = ConfigurationManager.AppSettings["Your Encrypt Passphrase"];
                byte[] results;
                var utf8 = new UTF8Encoding();
    
                // Step 1. We hash the passphrase using MD5
                // We use the MD5 hash generator as the result is a 128 bit byte array
                // which is a valid length for the TripleDES encoder we use below
                var hashProvider = new MD5CryptoServiceProvider();
                var tdesKey = hashProvider.ComputeHash(utf8.GetBytes(passphrase));
    
                // Step 2. Create a new TripleDESCryptoServiceProvider object
                // Step 3. Setup the encoder
                var tdesAlgorithm = new TripleDESCryptoServiceProvider
                                        {
                                            Key = tdesKey,
                                            Mode = CipherMode.ECB,
                                            Padding = PaddingMode.PKCS7
                                        };
    
                // Step 4. Convert the input string to a byte[]
                var dataToEncrypt = utf8.GetBytes(text);
    
                // Step 5. Attempt to encrypt the string
                try
                {
                    var encryptor = tdesAlgorithm.CreateEncryptor();
                    results = encryptor.TransformFinalBlock(dataToEncrypt, 0, dataToEncrypt.Length);
                }
                finally
                {
                    // Clear the TripleDes and Hashprovider services of any sensitive information
                    tdesAlgorithm.Clear();
                    hashProvider.Clear();
                }
    
                // Step 6. Return the encrypted string as a base64 encoded string
                return Convert.ToBase64String(results);
            }
    
            /// <summary>
            /// Decrypts the string.
            /// </summary>
            /// <param name="text">The text.</param>
            /// <returns>Decrypted string</returns>
            public string DecryptString(string text)
            {
                // Locals
                var passphrase = ConfigurationManager.AppSettings["Your Encrypt Passphrase"];
                byte[] results;
                var utf8 = new UTF8Encoding();
    
                // Step 1. We hash the passphrase using MD5
                // We use the MD5 hash generator as the result is a 128 bit byte array
                // which is a valid length for the TripleDES encoder we use below
                var hashProvider = new MD5CryptoServiceProvider();
                var tdesKey = hashProvider.ComputeHash(utf8.GetBytes(passphrase));
    
                // Step 2. Create a new TripleDESCryptoServiceProvider object
                // Step 3. Setup the decoder
                var tdesAlgorithm = new TripleDESCryptoServiceProvider
                                        {
                                            Key = tdesKey,
                                            Mode = CipherMode.ECB,
                                            Padding = PaddingMode.PKCS7
                                        };
    
                // Step 4. Convert the input string to a byte[]
                var dataToDecrypt = Convert.FromBase64String(text);
    
                // Step 5. Attempt to decrypt the string
                try
                {
                    var decryptor = tdesAlgorithm.CreateDecryptor();
                    results = decryptor.TransformFinalBlock(dataToDecrypt, 0, dataToDecrypt.Length);
                }
                finally
                {
                    // Clear the TripleDes and Hashprovider services of any sensitive information
                    tdesAlgorithm.Clear();
                    hashProvider.Clear();
                }
    
                // Step 6. Return the decrypted string in UTF8 format
                return utf8.GetString(results);
            }
    
    //
    ///加密字符串。
    /// 
    ///文本。
    ///加密字符串
    公共字符串加密字符串(字符串文本)
    {
    //当地人
    var passphrase=ConfigurationManager.AppSettings[“您的加密密码短语”];
    字节[]结果;
    var utf8=新的utf8编码();
    //步骤1.我们使用MD5散列密码短语
    //我们使用MD5哈希生成器,因为结果是一个128位字节数组
    //这是我们下面使用的TripleDES编码器的有效长度
    var hashProvider=new MD5CryptoServiceProvider();
    var tdesKey=hashProvider.ComputeHash(utf8.GetBytes(密码短语));
    //步骤2.创建新的TripleDESCryptoServiceProvider对象
    //步骤3.设置编码器
    var tdesAlgorithm=新的TripleDESCryptoServiceProvider
    {
    Key=tdesKey,
    模式=CipherMode.ECB,
    Padding=PaddingMode.PKCS7
    };
    //步骤4.将输入字符串转换为字节[]
    var dataToEncrypt=utf8.GetBytes(文本);
    //步骤5.尝试加密字符串
    尝试
    {
    var encryptor=tdesAlgorithm.CreateEncryptor();
    结果=encryptor.TransformFinalBlock(dataToEncrypt,0,dataToEncrypt.Length);
    }
    最后
    {
    //清除TripleDes和Hashprovider服务中的任何敏感信息
    tdesAlgorithm.Clear();
    hashProvider.Clear();
    }
    //步骤6.将加密字符串作为base64编码字符串返回
    返回Convert.tobase64字符串(结果);
    }
    /// 
    ///解密字符串。
    /// 
    ///文本。
    ///解密字符串
    公共字符串解密字符串(字符串文本)
    {
    //当地人
    var passphrase=ConfigurationManager.AppSettings[“您的加密密码短语”];
    字节[]结果;
    var utf8=新的utf8编码();
    //步骤1.我们使用MD5散列密码短语
    //我们使用MD5哈希生成器,因为结果是一个128位字节数组
    //这是我们下面使用的TripleDES编码器的有效长度
    var hashProvider=new MD5CryptoServiceProvider();
    var tdesKey=hashProvider.ComputeHash(utf8.GetBytes(密码短语));
    //步骤2.创建新的TripleDESCryptoServiceProvider对象
    //步骤3.设置解码器
    var tdesAlgorithm=新的TripleDESCryptoServiceProvider
    {
    Key=tdesKey,
    模式=CipherMode.ECB,
    Padding=PaddingMode.PKCS7
    };
    //步骤4.将输入字符串转换为字节[]
    var dataToDecrypt=Convert.FromBase64String(文本);
    //步骤5.尝试解密字符串
    尝试
    {
    var decryptor=tdesAlgorithm.CreateDecryptor();
    结果=decryptor.TransformFinalBlock(dataToDecrypt,0,dataToDecrypt.Length);
    }
    最后
    {
    //清除TripleDes和Hashprovider服务中的任何敏感信息
    tdesAlgorithm.Clear();
    hashProvider.Clear();
    }
    //步骤6.返回UTF8格式的解密字符串
    返回utf8.GetString(结果);
    }
    

    原始源代码在这里:

    这里有一些我经常使用的代码(改编自web上的源代码),它完全依赖于settings下存储在web.config/app.config中的密码短语。它使用三重des