diff --git a/src/SharpCompress/Common/Zip/Headers/DirectoryEntryHeader.cs b/src/SharpCompress/Common/Zip/Headers/DirectoryEntryHeader.cs
index 184bdfa3..ef40a6f3 100644
--- a/src/SharpCompress/Common/Zip/Headers/DirectoryEntryHeader.cs
+++ b/src/SharpCompress/Common/Zip/Headers/DirectoryEntryHeader.cs
@@ -14,8 +14,8 @@ internal class DirectoryEntryHeader : ZipFileEntry
VersionNeededToExtract = reader.ReadUInt16();
Flags = (HeaderFlags)reader.ReadUInt16();
CompressionMethod = (ZipCompressionMethod)reader.ReadUInt16();
- LastModifiedTime = reader.ReadUInt16();
- LastModifiedDate = reader.ReadUInt16();
+ OriginalLastModifiedTime = LastModifiedTime = reader.ReadUInt16();
+ OriginalLastModifiedDate = LastModifiedDate = reader.ReadUInt16();
Crc = reader.ReadUInt32();
CompressedSize = reader.ReadUInt32();
UncompressedSize = reader.ReadUInt32();
diff --git a/src/SharpCompress/Common/Zip/Headers/LocalEntryHeader.cs b/src/SharpCompress/Common/Zip/Headers/LocalEntryHeader.cs
index d0a87100..a7c83b24 100644
--- a/src/SharpCompress/Common/Zip/Headers/LocalEntryHeader.cs
+++ b/src/SharpCompress/Common/Zip/Headers/LocalEntryHeader.cs
@@ -13,8 +13,8 @@ internal class LocalEntryHeader : ZipFileEntry
Version = reader.ReadUInt16();
Flags = (HeaderFlags)reader.ReadUInt16();
CompressionMethod = (ZipCompressionMethod)reader.ReadUInt16();
- LastModifiedTime = reader.ReadUInt16();
- LastModifiedDate = reader.ReadUInt16();
+ OriginalLastModifiedTime = LastModifiedTime = reader.ReadUInt16();
+ OriginalLastModifiedDate = LastModifiedDate = reader.ReadUInt16();
Crc = reader.ReadUInt32();
CompressedSize = reader.ReadUInt32();
UncompressedSize = reader.ReadUInt32();
diff --git a/src/SharpCompress/Common/Zip/Headers/ZipFileEntry.cs b/src/SharpCompress/Common/Zip/Headers/ZipFileEntry.cs
index 98d230f5..edba3ebe 100644
--- a/src/SharpCompress/Common/Zip/Headers/ZipFileEntry.cs
+++ b/src/SharpCompress/Common/Zip/Headers/ZipFileEntry.cs
@@ -67,8 +67,26 @@ internal abstract class ZipFileEntry : ZipHeader
internal WinzipAesEncryptionData WinzipAesEncryptionData { get; set; }
+ ///
+ /// The last modified date as read from the Local or Central Directory header.
+ ///
+ internal ushort OriginalLastModifiedDate { get; set; }
+
+ ///
+ /// The last modified date from the UnixTimeExtraField, if present, or the
+ /// Local or Cental Directory header, if not.
+ ///
internal ushort LastModifiedDate { get; set; }
+ ///
+ /// The last modified time as read from the Local or Central Directory header.
+ ///
+ internal ushort OriginalLastModifiedTime { get; set; }
+
+ ///
+ /// The last modified time from the UnixTimeExtraField, if present, or the
+ /// Local or Cental Directory header, if not.
+ ///
internal ushort LastModifiedTime { get; set; }
internal uint Crc { get; set; }
diff --git a/src/SharpCompress/Common/Zip/PkwareTraditionalEncryptionData.cs b/src/SharpCompress/Common/Zip/PkwareTraditionalEncryptionData.cs
index 353000d8..d6c4e96d 100644
--- a/src/SharpCompress/Common/Zip/PkwareTraditionalEncryptionData.cs
+++ b/src/SharpCompress/Common/Zip/PkwareTraditionalEncryptionData.cs
@@ -39,7 +39,7 @@ internal class PkwareTraditionalEncryptionData
{
throw new CryptographicException("The password did not match.");
}
- if (plainTextHeader[11] != (byte)((header.LastModifiedTime >> 8) & 0xff))
+ if (plainTextHeader[11] != (byte)((header.OriginalLastModifiedTime >> 8) & 0xff))
{
throw new CryptographicException("The password did not match.");
}