private async Task DecryptAsync(string source, string destination) { var aes = new AESEncryptionProvider(); aes.ProgressChanged += Decryption_ProgressChanged; await aes.DecryptFileAsync(source, destination, SecureSettings.EncryptionPassword); }
public void Encrypt_L256_WithSalt_Test() { var key = AESEncryptionProvider.CreateKey(); var s = AESEncryptionProvider.Encrypt("实现中华民族伟大复兴的中国梦", key.Key, key.IV, "12345678", keySize: AESKeySizeTypes.L256); var o = AESEncryptionProvider.Decrypt(s, key.Key, key.IV, "12345678", keySize: AESKeySizeTypes.L256); Assert.Equal("实现中华民族伟大复兴的中国梦", o); }
public void Encrypt_L192_Test() { var key = AESEncryptionProvider.CreateKey(); var s = AESEncryptionProvider.Encrypt("实现中华民族伟大复兴的中国梦", key.Key, key.IV, keySize: AESKeySizeTypes.L192); var o = AESEncryptionProvider.Decrypt(s, key.Key, key.IV, keySize: AESKeySizeTypes.L192); Assert.Equal("实现中华民族伟大复兴的中国梦", o); }
public void Test_Encrypt_L256_WithSalt() { var key = AESEncryptionProvider.CreateKey(AESKeySizeType.L256); var s1 = AESEncryptionProvider.Encrypt("仙剑蜀山", key.Key, key.IV, "12345678", keySize: AESKeySizeType.L256); var o1 = AESEncryptionProvider.Decrypt(s1, key.Key, key.IV, "12345678", keySize: AESKeySizeType.L256); Assert.Equal("仙剑蜀山", o1); }
public void Test_Encrypt_L192() { var key = AESEncryptionProvider.CreateKey(AESKeySizeType.L192); var s1 = AESEncryptionProvider.Encrypt("仙剑蜀山", key.Key, key.IV, keySize: AESKeySizeType.L192); var o1 = AESEncryptionProvider.Decrypt(s1, key.Key, key.IV, keySize: AESKeySizeType.L192); Assert.Equal("仙剑蜀山", o1); }
public void Encrypt_L128_WithSalt_Test() { var key = AESEncryptionProvider.CreateKey(); var s1 = AESEncryptionProvider.Encrypt("实现中华民族伟大复兴的中国梦", key.Key, key.IV, "12345678", keySize: AESKeySizeTypes.L128); var o1 = AESEncryptionProvider.Decrypt(s1, key.Key, key.IV, "12345678", keySize: AESKeySizeTypes.L128); //Assert.Equal("image", o0); Assert.Equal("实现中华民族伟大复兴的中国梦", o1); }
public void AESEncryptionProvider_Should_Generate_ValidKey() { IEncryptionProvider enc = new AESEncryptionProvider(); string key = enc.GenerateKey(); Assert.NotNull(key); Assert.True(key.Length > 0); //Key sizes 128, 192 or 256 bits Assert.True(Convert.FromBase64String(key).Length >= 128 / 8); }
public void Encrypt_L128_Test() { var key = AESEncryptionProvider.CreateKey(); //var s0 = AESEncryptionProvider.Encrypt("image", key); var s1 = AESEncryptionProvider.Encrypt("实现中华民族伟大复兴的中国梦", key.Key, key.IV, keySize: AESKeySizeTypes.L128); //Assert.Equal("en1cF/ZazqA+y3oIuJNb/Q==", s0); //Assert.Equal("en1cF/ZazqA+y3oIuJNb/Q==", s1); //var o0 = AESEncryptionProvider.Decrypt(s0, key); var o1 = AESEncryptionProvider.Decrypt(s1, key.Key, key.IV, keySize: AESKeySizeTypes.L128); //Assert.Equal("image", o0); Assert.Equal("实现中华民族伟大复兴的中国梦", o1); }
static void Main() { //Console.WriteLine(Int2Bin(10, 8)); //Console.WriteLine(Int2Bin(1234, 32)); //var a = LoopLeftShift(1234, 5); //Console.WriteLine(Int2Bin(a, 32)); //Console.WriteLine("LFSR"); //var LFSR = KeyLoading(0, 0); //foreach (var i in LFSR) //{ // Console.WriteLine("{0:X}", i); //} //Console.WriteLine("X-BitRec"); //var X = BitRec(LFSR); //foreach (var i in X) //{ // Console.WriteLine("{0:X}", i); //} //Console.WriteLine("S"); //var b = S(X[0]); //Console.WriteLine(b); //Console.WriteLine("========================"); //var (LFSR2, R21, R22) = Init(0, 0); //var (LFSR3, R31, R32, Z) = Work(LFSR2, R21, R22); //Console.WriteLine("{0:X}", Z); var o = "实现中华民族伟大复兴的中国梦"; var b = Encoding.UTF8.GetBytes(o); var ka = AESEncryptionProvider.FastCreateKey(); var kd = DESEncryptionProvider.FastCreateKey(); var kt = TripleDESEncryptionProvider.FastCreateKey(); var sa = AESEncryptionProvider.FastDecrypt(AESEncryptionProvider.FastEncrypt(b, ka), ka); var sd = DESEncryptionProvider.FastDecrypt(DESEncryptionProvider.FastEncrypt(b, kd), kd); var st = TripleDESEncryptionProvider.FastDecrypt(TripleDESEncryptionProvider.FastEncrypt(b, kt), kt); var oa = Encoding.UTF8.GetString(sa); var od = Encoding.UTF8.GetString(sd); var ot = Encoding.UTF8.GetString(st); Console.WriteLine(o == oa ? "A=Yes" : "A=No"); Console.WriteLine(o == od ? "D=Yes" : "D=No"); Console.WriteLine(o == ot ? "T=Yes" : "T=No"); Console.ReadLine(); }
public void AESEncryptionProvider_Should_Encrypt_Decrypt_Correctly() { IEncryptionProvider enc = new AESEncryptionProvider(); for (int i = 0; i < 100; i++) { string plainText = Lorem.Paragraph(120); string key = enc.GenerateKey(); string cipherText = enc.Encrypt(plainText, key); string decryptedText = enc.Decrypt(cipherText, key); Assert.Equal(plainText, decryptedText); } }
private async Task EncryptAsync(string source, string destination) { var dir = Path.GetDirectoryName(destination); if (!Directory.Exists(dir)) { using ( new NetworkShareConnection(SecureSettings.FileShareDirectory, SecureSettings.FileShareCredentials)) { Directory.CreateDirectory(dir); } } var aes = new AESEncryptionProvider(); aes.ProgressChanged += Encryption_ProgressChanged; using (new NetworkShareConnection(SecureSettings.FileShareDirectory, SecureSettings.FileShareCredentials)) { await aes.EncryptFileAsync(source, destination, SecureSettings.EncryptionPassword); } }
static void Main() { Directory.CreateDirectory("_test"); bool writeArchive = true; bool useOldWriter = false; bool readArchive = true; bool useOldReader = false; if (writeArchive) { if (useOldWriter) { using (var stream = new FileStream(@"_test\test.7z", FileMode.Create, FileAccess.ReadWrite, FileShare.Delete)) using (var encryption = new AESEncryptionProvider("test")) using (var encoder = new ArchiveWriter.Lzma2Encoder(null)) { var writer = new ArchiveWriter(stream); writer.DefaultEncryptionProvider = encryption; writer.ConnectEncoder(encoder); string path = Path.GetDirectoryName(typeof(Program).Assembly.Location); var directory = new DirectoryInfo(path); foreach (string filename in Directory.EnumerateFiles(path)) { writer.WriteFile(directory, new FileInfo(filename)); } writer.WriteFinalHeader(); } } else { Task.Run(async delegate { using (var archiveStream = new FileStream(@"_test\test.7z", FileMode.Create, FileAccess.ReadWrite, FileShare.Delete)) using (var archiveWriter = ManagedLzma.SevenZip.Writer.ArchiveWriter.Create(archiveStream, false)) { var encoder = new ManagedLzma.SevenZip.Writer.EncoderDefinition(); ManagedLzma.SevenZip.Writer.EncoderNodeDefinition node1 = null; ManagedLzma.SevenZip.Writer.EncoderNodeDefinition node2 = null; //node1 = encoder.CreateEncoder(ManagedLzma.SevenZip.Encoders.CopyEncoderSettings.Instance); //node1 = encoder.CreateEncoder(new ManagedLzma.SevenZip.Encoders.LzmaEncoderSettings(new ManagedLzma.LZMA.EncoderSettings())); //node1 = encoder.CreateEncoder(new ManagedLzma.SevenZip.Encoders.Lzma2EncoderSettings(new ManagedLzma.LZMA2.EncoderSettings())); node2 = encoder.CreateEncoder(new ManagedLzma.SevenZip.Writer.AesEncoderSettings(ManagedLzma.PasswordStorage.Create("test"))); if (node1 != null && node2 != null) { encoder.Connect(encoder.GetContentSource(), node1.GetInput(0)); encoder.Connect(node1.GetOutput(0), node2.GetInput(0)); encoder.Connect(node2.GetOutput(0), encoder.CreateStorageSink()); } else { encoder.Connect(encoder.GetContentSource(), (node1 ?? node2).GetInput(0)); encoder.Connect((node1 ?? node2).GetOutput(0), encoder.CreateStorageSink()); } encoder.Complete(); var metadata = new ManagedLzma.SevenZip.Writer.ArchiveMetadataRecorder(); var directory = new DirectoryInfo(Path.GetDirectoryName(typeof(Program).Assembly.Location)); bool useDistinctEncoders = false; if (useDistinctEncoders) { foreach (var file in directory.EnumerateFiles()) { using (var session = archiveWriter.BeginEncoding(encoder, true)) { using (var fileStream = file.OpenRead()) { var result = await session.AppendStream(fileStream, true); metadata.AppendFile(file.Name, result.Length, result.Checksum, file.Attributes, file.CreationTimeUtc, file.LastWriteTimeUtc, file.LastAccessTimeUtc); } // TODO: ensure that everything still aborts properly if we don't call complete await session.Complete(); } } } else { using (var session = archiveWriter.BeginEncoding(encoder, true)) { foreach (var file in directory.EnumerateFiles()) { using (var fileStream = file.OpenRead()) { var result = await session.AppendStream(fileStream, true); metadata.AppendFile(file.Name, result.Length, result.Checksum, file.Attributes, file.CreationTimeUtc, file.LastWriteTimeUtc, file.LastAccessTimeUtc); } } // TODO: ensure that everything still aborts properly if we don't call complete await session.Complete(); } } await archiveWriter.WriteMetadata(metadata); await archiveWriter.WriteHeader(); } }).GetAwaiter().GetResult(); } } if (readArchive) { if (useOldReader) { var pass = new Password("test"); var db = new master._7zip.Legacy.CArchiveDatabaseEx(); var x = new master._7zip.Legacy.ArchiveReader(); x.Open(new FileStream(@"_test\test.7z", FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Delete)); x.ReadDatabase(db, pass); db.Fill(); x.Extract(db, null, pass); } else { var file = new FileStream(@"_test\test.7z", FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Delete); var mdReader = new ManagedLzma.SevenZip.FileModel.ArchiveFileModelMetadataReader(); var mdModel = mdReader.ReadMetadata(file); var password = ManagedLzma.PasswordStorage.Create("test"); for (int sectionIndex = 0; sectionIndex < mdModel.Metadata.DecoderSections.Length; sectionIndex++) { var dsReader = new ManagedLzma.SevenZip.Reader.DecodedSectionReader(file, mdModel.Metadata, sectionIndex, password); var mdFiles = mdModel.GetFilesInSection(sectionIndex); System.Diagnostics.Debug.Assert(mdFiles.Count == dsReader.StreamCount); int k = 0; while (dsReader.CurrentStreamIndex < dsReader.StreamCount) { var mdFile = mdFiles[dsReader.CurrentStreamIndex]; if (mdFile != null) { System.Diagnostics.Debug.Assert(mdFile.Stream.SectionIndex == sectionIndex); System.Diagnostics.Debug.Assert(mdFile.Stream.StreamIndex == dsReader.CurrentStreamIndex); var substream = dsReader.OpenStream(); using (var outstream = new FileStream(@"_test\output_" + (++k) + "_" + mdFile.Name, FileMode.Create, FileAccess.ReadWrite, FileShare.Delete)) { outstream.SetLength(0); if (mdFile.Offset != 0) { throw new NotImplementedException(); } substream.CopyTo(outstream); } } dsReader.NextStream(); } } } } }