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 でも機能するものを期待しています。