如何用c#实现aes加密字符串后密文为一些乱码,当然保证可以解密

dzhl01 2009-12-21 10:54:08
如何用c#实现aes加密字符串后密文为一些乱码,当然保证可以解密

我用aes加密后,通过Convert.ToBase64String(encryptBytes)返回密文,密文为一些字母组合,我想要的是一些乱码,不知能实现吗
...全文
1300 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
me_427 2010-11-01
  • 打赏
  • 举报
回复
http://hi.baidu.com/%D2%BB%B5%E3%C7%E7/blog/item/a84c219535455513d31b706d.html
xunmengwuya 2010-06-08
  • 打赏
  • 举报
回复
楼上写的是DES算法
风之影子 2009-12-22
  • 打赏
  • 举报
回复
#region 对文件进行加密解密
static string iv = "libinguest";
static string key = "sxjadzjs";

/// <summary>
/// DES加密偏移量,必须是>=8位长的字符串
/// </summary>
public static string IV
{
get { return iv; }
set { iv = value; }
}

/// <summary>
/// DES加密的私钥,必须是8位长的字符串
/// </summary>
public static string Key
{
get { return key; }
set { key = value; }
}

/// <summary>
/// 对文件内容进行DES加密
/// </summary>
/// <param name="sourceFile">待加密的文件绝对路径</param>
/// <param name="destFile">加密后的文件保存的绝对路径</param>
public static void EncryptFile(string sourceFile, string destFile)
{

if (!File.Exists(sourceFile)) throw new FileNotFoundException("指定的文件路径不存在!", sourceFile);

byte[] btKey = Encoding.Default.GetBytes(key);
byte[] btIV = Encoding.Default.GetBytes(iv);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] btFile = File.ReadAllBytes(sourceFile);


using (FileStream fs = new FileStream(destFile, FileMode.Create, FileAccess.Write))
{
try
{
using (CryptoStream cs = new CryptoStream(fs, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write))
{
cs.Write(btFile, 0, btFile.Length);
cs.FlushFinalBlock();
}
}
catch
{
throw;
}
finally
{
fs.Close();
}
}
}

/// <summary>
/// 对文件内容进行DES加密,加密后覆盖掉原来的文件
/// </summary>
/// <param name="sourceFile">待加密的文件的绝对路径</param>
public void EncryptFile(string sourceFile)
{
EncryptFile(sourceFile, sourceFile);
}

/// <summary>
/// 对文件内容进行DES解密
/// </summary>
/// <param name="sourceFile">待解密的文件绝对路径</param>
/// <param name="destFile">解密后的文件保存的绝对路径</param>
public static void DecryptFile(string sourceFile, string destFile)
{

if (!File.Exists(sourceFile))
throw new FileNotFoundException("指定的文件路径不存在!", sourceFile);

byte[] btKey = Encoding.Default.GetBytes(key);
byte[] btIV = Encoding.Default.GetBytes(iv);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] btFile = File.ReadAllBytes(sourceFile);


using (FileStream fs = new FileStream(destFile, FileMode.Create, FileAccess.Write))
{
try
{
using (CryptoStream cs = new CryptoStream(fs, des.CreateDecryptor(btKey, btIV), CryptoStreamMode.Write))
{
cs.Write(btFile, 0, btFile.Length);
cs.FlushFinalBlock();
}
}
catch
{
throw;
}
finally
{
fs.Close();
}
}
}

/// <summary>
/// 对文件内容进行DES解密,加密后覆盖掉原来的文件
/// </summary>
/// <param name="sourceFile">待解密的文件的绝对路径</param>
public static void DecryptFile(string sourceFile)
{
DecryptFile(sourceFile, sourceFile);
}

#endregion
CGabriel 2009-12-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dzhl01 的回复:]
二楼别理解错了,我是用Convert.ToBase64String(encryptBytes)将通过AES加密后哦的字节流转换为了字符串,而不是说是用这个函数来加密。
三楼给出的方法,我知道,我现在需要的是对文件内容一行一行进行加密,而非将这个文件进行加密。
[/Quote]

楼主你别理解错了, Convert.ToBase64String(encryptBytes) 压根就不是加密,而是 base64 编码。

即使你完全不看 MSDN, 也应该认得 To Base64 String 与 Aes Managed 这两堆英文里面,哪个才跟 AES 有关系吧?

至于三楼的方法,核心部分是

cs.Write(btFile, 0, btFile.Length);

是不是还要专门写个一行行的字符串加密函数出来。
dzhl01 2009-12-22
  • 打赏
  • 举报
回复
二楼别理解错了,我是用Convert.ToBase64String(encryptBytes)将通过AES加密后哦的字节流转换为了字符串,而不是说是用这个函数来加密。
三楼给出的方法,我知道,我现在需要的是对文件内容一行一行进行加密,而非将这个文件进行加密。
vrhero 2009-12-21
  • 打赏
  • 举报
回复
AES加密是AES加密,Base64编码是Base64编码...根本是两码事,不要混为一谈...

去看看System.Security.Cryptography.AesManaged类...

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧