Sorry, I currently don't have a way to detect if a zip file requires a password other than not providing one then catching the CryptographicException.
To set the password, ZipArchive.Open has an overload (Stream, string) where the string is the password.
To set the password, ZipArchive.Open has an overload (Stream, string) where the string is the password.