Chiffrement de fichiers
Ce guide explique comment chiffrer et dechiffrer des fichiers avec le SDK.
Format SECF
Le SDK utilise le format .secf (Secure Exchanges Crypted File) pour les fichiers chiffres.
Chiffrer un fichier
Exemple rapide
using SecureExchangesSDK.Helpers;
byte[] key = CryptoHelper.GenerateSecureRandomByteArray(32);
byte[] iv = CryptoHelper.GenerateSecureRandomByteArray(16);
// Chiffre et cree fichier.pdf.secf
bool success = CryptoHelper.EncryptSecfFile(@"C:\fichier.pdf", key, iv);
Avec repertoire de sortie
// Chiffre vers un repertoire specifique
bool success = CryptoHelper.EncryptSecfFile(
@"C:\source\fichier.pdf",
@"C:\output", // Repertoire de sortie
key,
iv
);
// Cree: C:\output\fichier.pdf.secf
Dechiffrer un fichier
// Dechiffre fichier.pdf.secf -> fichier.pdf
bool success = CryptoHelper.DecryptSecfFile(@"C:\fichier.pdf.secf", key, iv);
// Avec repertoire de sortie
bool success = CryptoHelper.DecryptSecfFile(
@"C:\fichier.pdf.secf",
@"C:\output",
key,
iv
);
Exemple complet : Archivage securise
public class SecureArchiveService
{
/// <summary>
/// Archive un fichier de maniere securisee
/// </summary>
public ArchiveResult ArchiveFile(string filePath, string archivePath)
{
// Generer les cles
byte[] key = CryptoHelper.GenerateSecureRandomByteArray(32);
byte[] iv = CryptoHelper.GenerateSecureRandomByteArray(16);
// Calculer le hash original
string originalHash = CryptoHelper.GetSHA512OfFile(filePath);
// Chiffrer
bool encrypted = CryptoHelper.EncryptSecfFile(filePath, archivePath, key, iv);
if (encrypted)
{
return new ArchiveResult
{
Success = true,
EncryptedPath = Path.Combine(archivePath, Path.GetFileName(filePath) + ".secf"),
Key = Convert.ToBase64String(key),
IV = Convert.ToBase64String(iv),
OriginalHash = originalHash
};
}
return new ArchiveResult { Success = false };
}
/// <summary>
/// Restaure un fichier archive
/// </summary>
public bool RestoreFile(string encryptedPath, string outputPath, string base64Key, string base64IV)
{
byte[] key = Convert.FromBase64String(base64Key);
byte[] iv = Convert.FromBase64String(base64IV);
return CryptoHelper.DecryptSecfFile(encryptedPath, outputPath, key, iv);
}
}
public class ArchiveResult
{
public bool Success { get; set; }
public string EncryptedPath { get; set; }
public string Key { get; set; }
public string IV { get; set; }
public string OriginalHash { get; set; }
}