//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; }
//Hàm mã hoá File public static bool EncryptFile(string sInputFilename, string sOutputFilename) { MyFileCryptography MyFileCrypto = new MyFileCryptography(); //Set Algorithms MyFileCrypto.SetAlgorithms("Triple DES"); //Generate key MyFileCrypto.GenerateSecretKey(); //Encrypt File; try { MyFileCrypto.EncryptFilewithSecretKey(sInputFilename, sOutputFilename, 1, 0); //1,0 = ECB mode; } catch { return false; } try { MyFileCrypto.EncryptSecretKeyWithRSAAlgo_DirectPublicKey(sPublicKey_Default, iPublicKeyLength_Default); } catch { return false; } try { //Add key vào File đã mã hoá MyFileCrypto.AddSecretKeytoFile(sOutputFilename); } catch { return false; } return true; }