openpyxl expects the workbookHashValue and workbookSaltValues to be HexBinary strings. However, excel can produce base64 encoded strings
This documentation from Microsoft: https://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.workbookprotection(v=office.15).aspx
Calls out for both of these fields: The possible values for this attribute are defined by the W3C XML Schema base64Binary datatype.
Here's another implementation (Java) that is consistent with the MSFT docs above. http://www.javafind.net/gate.jsp?q=/library/162/docx4j-3.1.0-javadoc/org/xlsx4j/sml/CTWorkbookProtection.html
Note that revisionsHashValue and revisionsSaltValue are also supposed to be base64 data
Currently, worksheets protected in this way fail to parse.