gpt4 book ai didi

excel - 如何从 VBA 在 Excel 2010 中创建安全受密码保护的 .xls 文件

转载 作者:行者123 更新时间:2023-12-02 04:01:22 25 4
gpt4 key购买 nike

我发现在 Excel 2010(和 2007)中,当您尝试选择一种更安全的加密类型时,它似乎会默默地忽略您的设置,给您留下一个可以在几秒钟内破解的文件,地址为 decryptum示例。

这不适用于默认情况下采用 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 年。

最佳答案

这是因为 Office 2007/2010 未启用 RC4 - 您必须手动执行与管理模板相同的操作。

为了证明这一点,在 Excel 2010 中执行上述例程,然后打开“encryption_test.xls”文件并按 Alt + F11 转到 VBE 。然后运行以下命令(首先按 Ctrl + G 打开立即窗口):

Sub CheckEncryption()
Dim aw As Workbook: Set aw = ActiveWorkbook
With aw
Debug.Print .PasswordEncryptionAlgorithm
Debug.Print .PasswordEncryptionFileProperties
Debug.Print .PasswordEncryptionKeyLength
Debug.Print .PasswordEncryptionProvider
End With
End Sub

您可能会看到以下值:1) Office Standard、2) False、3) 40 和 4) 办公室。这意味着 RC4 没有被使用;加密默认为标准和糟糕/旧的 Excel 加密。显然,MSFT 也认为 RC4 非常糟糕,因此在较新的 Office 客户端中使用它有点困难。

请参阅这两篇文章:

脚注:SaveAs 例程的FileFormat 部分不是这里的罪魁祸首。它只是按照 CryptoAPI 的指示去做。事实上,从 Excel 2010 VBA 开始,您可以使用 Excel 2003 的 SaveAs,它略有不同,但不会产生任何影响(从 Excel 2010 开始,它是一个隐藏例程,可以像 >ActiveWorkbook.[_SaveAs] 文件名:=“加密_test.xls”,密码:=“密码”。)

关于excel - 如何从 VBA 在 Excel 2010 中创建安全受密码保护的 .xls 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com