C#加密出错第2部分
真的没有一个好的一周加密。让我解释一下我需要什么C#加密出错第2部分,c#,encryption,C#,Encryption,真的没有一个好的一周加密。让我解释一下我需要什么 我想将字符串值加密到文件 我想用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