功能更新
This commit is contained in:
@@ -1,176 +0,0 @@
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Windows;
|
||||
|
||||
namespace ShrlAlgoToolkit.Core.Assists;
|
||||
|
||||
public static class FileEncryptAssist
|
||||
{
|
||||
public static void DecryptFile(string strPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
var intLent = strPath.LastIndexOf("\\", StringComparison.Ordinal) + 1; //设置截取的起始位置
|
||||
var intLong = strPath.Length; //设置截取的长度
|
||||
var strName = strPath.Substring(intLent, intLong - intLent); //要加密的文件名称
|
||||
var intTxt = strName.LastIndexOf(".", StringComparison.Ordinal); //设置截取的起始位置
|
||||
strName = strName.Substring(0, intTxt); //获取文件拓展名
|
||||
if (strName.LastIndexOf("Out", StringComparison.Ordinal) != -1)
|
||||
{
|
||||
strName = strName.Substring(0, strName.LastIndexOf("Out", StringComparison.Ordinal));
|
||||
}
|
||||
else
|
||||
{
|
||||
strName += "In";
|
||||
}
|
||||
|
||||
var strInName = strPath.Substring(0, strPath.LastIndexOf("\\", StringComparison.Ordinal) + 1) + strName + ".txt"; //解密后的文件名及路径
|
||||
//解密文件密钥
|
||||
byte[] key =
|
||||
{
|
||||
24,
|
||||
55,
|
||||
102,
|
||||
24,
|
||||
98,
|
||||
26,
|
||||
67,
|
||||
29,
|
||||
84,
|
||||
19,
|
||||
37,
|
||||
118,
|
||||
104,
|
||||
85,
|
||||
121,
|
||||
27,
|
||||
93,
|
||||
86,
|
||||
24,
|
||||
55,
|
||||
102,
|
||||
24,
|
||||
98,
|
||||
26,
|
||||
67,
|
||||
29,
|
||||
9,
|
||||
2,
|
||||
49,
|
||||
69,
|
||||
73,
|
||||
92
|
||||
};
|
||||
byte[] iv = { 22, 56, 82, 77, 84, 31, 74, 24, 55, 102, 24, 98, 26, 67, 29, 99 };
|
||||
#if NET8_0
|
||||
var myRijndael = Aes.Create(); //创建RijndaelManaged对象
|
||||
#else
|
||||
var myRijndael = new RijndaelManaged();
|
||||
#endif
|
||||
//创建RijndaelManaged对象
|
||||
var fsOut = File.Open(strPath, FileMode.Open, FileAccess.Read); //创建FileStream对象
|
||||
var csDecrypt = new CryptoStream(fsOut, myRijndael.CreateDecryptor(key, iv), CryptoStreamMode.Read);
|
||||
var sr = new StreamReader(csDecrypt); //把文件读出来
|
||||
var sw = new StreamWriter(strInName); //解密后写一个新文件
|
||||
sw.Write(sr.ReadToEnd());
|
||||
sw.Flush();
|
||||
sw.Close(); //关闭FileStream对象
|
||||
fsOut.Close(); //关闭FileStream对象
|
||||
if (MessageBox.Show("解密成功!解密后的文件名及路径为:\n" + strInName + ",是否删除文件", "提示信息", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
||||
{
|
||||
File.Delete(strPath); //清除指定文件
|
||||
//tbpathname.Text = "";//请空文本文件
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 计算hash256
|
||||
/// </summary>
|
||||
/// <param name="filePath"></param>
|
||||
/// <returns></returns>
|
||||
public static string ComputeFileHash(string filePath)
|
||||
{
|
||||
using (SHA256 sha256 = SHA256.Create())
|
||||
using (FileStream stream = File.OpenRead(filePath))
|
||||
{
|
||||
byte[] hashBytes = sha256.ComputeHash(stream);
|
||||
return BitConverter.ToString(hashBytes).Replace("-", string.Empty).ToLower();
|
||||
}
|
||||
}
|
||||
public static void EncryptFile(string strPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
var intLent = strPath.LastIndexOf("\\", StringComparison.Ordinal) + 1; //设置截取的起始位置
|
||||
var intLong = strPath.Length; //设置截取的长度
|
||||
var strName = strPath.Substring(intLent, intLong - intLent); //要加密的文件名称
|
||||
var intTxt = strName.LastIndexOf(".", StringComparison.Ordinal); //设置截取的起始位置
|
||||
var intTxtLeng = strName.Length; //设置截取的长度
|
||||
var strTxt = strName.Substring(intTxt, intTxtLeng - intTxt); //取出文件的拓展名
|
||||
strName = strName.Substring(0, intTxt);
|
||||
var strOutName = strPath.Substring(0, strPath.LastIndexOf("\\", StringComparison.Ordinal) + 1) + strName + "Out" + strTxt; //加密后的文件名及路径
|
||||
byte[] key =
|
||||
{
|
||||
24,
|
||||
55,
|
||||
102,
|
||||
24,
|
||||
98,
|
||||
26,
|
||||
67,
|
||||
29,
|
||||
84,
|
||||
19,
|
||||
37,
|
||||
118,
|
||||
104,
|
||||
85,
|
||||
121,
|
||||
27,
|
||||
93,
|
||||
86,
|
||||
24,
|
||||
55,
|
||||
102,
|
||||
24,
|
||||
98,
|
||||
26,
|
||||
67,
|
||||
29,
|
||||
9,
|
||||
2,
|
||||
49,
|
||||
69,
|
||||
73,
|
||||
92
|
||||
}; //加密文件密钥
|
||||
byte[] iv = { 22, 56, 82, 77, 84, 31, 74, 24, 55, 102, 24, 98, 26, 67, 29, 99 };
|
||||
#if NET8_0
|
||||
var myRijndael = Aes.Create();
|
||||
#else
|
||||
var myRijndael = new RijndaelManaged();
|
||||
#endif
|
||||
var fsOut = File.Open(strOutName, FileMode.Create, FileAccess.Write);
|
||||
var fsIn = File.Open(strPath, FileMode.Open, FileAccess.Read);
|
||||
var csDecrypt = new CryptoStream(fsOut, myRijndael.CreateDecryptor(key, iv), CryptoStreamMode.Write); //写入加密文本文件
|
||||
var br = new BinaryReader(fsIn); //创建阅读器来加密文件
|
||||
csDecrypt.Write(br.ReadBytes((int)fsIn.Length), 0, (int)fsIn.Length); //将数据写入加密文件
|
||||
csDecrypt.Close(); //关闭CryptoStream对象
|
||||
fsIn.Close(); //关闭FileStream对象
|
||||
fsOut.Close(); //关闭FileStream对象
|
||||
if (MessageBox.Show("加密成功!加密后的文件名及路径为:\n" + strOutName + ",是否删除文件", "提示信息", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
||||
{
|
||||
File.Delete(strPath); //清除指定文件
|
||||
//tbpathname.Text = "";//请空文本文件
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user