//Hàm giải mã Data public static string DecryptData(string sInputFilename) { MyFileCryptography MyFileCrypto = new MyFileCryptography(); //Set Algorithms MyFileCrypto.SetAlgorithms("Triple DES"); try { //Đọc Key từ File ra và gán vào trong object MyFileCrypto.Secretkey MyFileCrypto.ReadSecretKeyfromFile(sInputFilename); } catch { return null; } try { //Giải mã Secret key với Private Key MyFileCrypto.DecryptSecretKeywithRSAAlgorithm(sPrivateKey_Default, 1024); } catch { return null; } try { StreamReader srReader = new StreamReader(sInputFilename); string sKey = srReader.ReadLine(); srReader.Close(); List<byte> lContent = new List<byte>(); FileStream fsReadContent = new FileStream(sInputFilename, FileMode.Open, FileAccess.Read); long lContentLength = fsReadContent.Length - sKey.Length - 2; //lay do dai content byte[] bContent = new byte[lContentLength]; fsReadContent.Seek(sKey.Length + 2, SeekOrigin.Begin); //chuyen den vi tri ket thuc key + 2 byte xuong dong fsReadContent.Read(bContent, 0, bContent.Length); //lay noi dung de giai ma fsReadContent.Close(); //Giải mã File với key vừa đc giải mã và Input là file Temp ở trên return MyFileCrypto.DecryptDatawithSecretKey(bContent, 1, 0); //0 = ECB Mode } catch { return null; } return null; }
//Hàm giải mã File public static bool DecryptFile(string sInputFilename, string sOutputFilename) { MyFileCryptography MyFileCrypto = new MyFileCryptography(); //Set Algorithms MyFileCrypto.SetAlgorithms("Triple DES"); try { //Đọc Key từ File ra và gán vào trong object MyFileCrypto.Secretkey MyFileCrypto.ReadSecretKeyfromFile(sInputFilename); } catch { return false; } try { //Giải mã Secret key với Private Key MyFileCrypto.DecryptSecretKeywithRSAAlgorithm(sPrivateKey_Default, 1024); } catch { return false; } try { //Tạo 1 file Temp chứ nội dung mã hoá, tạo 1 string chứa đường dẫn File Temp này string tempInput = MyFileCrypto.ReadandCreateTempCryptoFile(sInputFilename); //Giải mã File với key vừa đc giải mã và Input là file Temp ở trên MyFileCrypto.DecryptFilewithSecretKey(tempInput, sOutputFilename, 1, 0); //0 = ECB Mode //Sau khi giải mã thì Delete file Temp này đi MyFileCrypto.DeleteTempCryptoFile(tempInput); } catch { return false; } return true; }