我发现在 Excel 2010(和 2007)中,当您尝试选择一种更安全的加密类型时,它似乎会默默地忽略您的设置,例如在解密时留下一个可以在几秒钟内破解的文件。
这不适用于默认为 AES 加密的新文件格式,仅当您保存为 97-2003 格式时。
这是我在工作簿中创建的宏:
Sub enc()
Me.SetPasswordEncryptionOptions _
PasswordEncryptionProvider:= "Microsoft Strong Cryptographic Provider", _
PasswordEncryptionAlgorithm:= "RC4", _
PasswordEncryptionKeyLength:=128, _
PasswordEncryptionFileProperties:=True
Me.SaveAs _
Filename:="encryption_test.xls", _
FileFormat:=xlExcel8, _
Password:="password"
End Sub
通过省略 FileFormat 参数,很容易让 Excel 2003(正确)输出这些加密设置:
Sub enc()
Me.SetPasswordEncryptionOptions _
PasswordEncryptionProvider:= "Microsoft Strong Cryptographic Provider", _
PasswordEncryptionAlgorithm:= "RC4", _
PasswordEncryptionKeyLength:=128, _
PasswordEncryptionFileProperties:=True
Me.SaveAs _
Filename:="encryption_test.xls", _
Password:="password"
End Sub
然后,decryptum 无法像我预期的那样解密。
我做错了什么还是这是一个错误?如果它是一个错误,我该如何解决它?
我在下面为 Excel 2010 添加了各种解决方案,但我希望有一些更简单的东西,最好是也适用于 2007 年的东西。