パスワード無しで保存すると、実は ZIP ファイル形式(ダンプするとヘッダに PK とか云う ASCII 文字が見える) だけど、パスワード付けると ZIP でなくなり、 Excel 2003 のそれと共通フォーマットなのではないか?とのお話を伺ったので、ちょっとだけ試してみるモードです。
(1)Excel 2003 SP3 の挙動
書き込みパスワード付 Excel 2007 形式ファイル ( 拡張子 xlsx ) を改名して、拡張子を xls にします。
これを Excel 2003 SP3 で開きます。
→ 「ファイル形式が正しくありません」と表示されます。そして「開かれません」。
→ 元の xlsx な拡張子のままのファイルだと、まず「パスワード」を聞かれます。その後、「互換機能パック」に渡されて形式変換され、Excel 2003 で開かれます。
※ 登録ハンドラとして MOICE を無効にしてます。
この時点で、Excel 2007 で付けたディジタル署名は「削除」されました。
この署名は、Excel 2003 環境でも使用しているものと同じで、Excel 2003 のインストールされた PC から、pfx ファイルでエクスポートし、Excel2007 環境へインポートしたものです。
実はコードサイニング用ではありません。
普段 Excel2003 をメインに使用しているので、これは気がつきませんでしたね。
基本的に外部にお渡しするものは Excel2003 形式にしているからと云うのもあります。
→ パスワード付でない xlsx ファイルを、拡張子 xls にすると、「形式を認識できません」と表示されます。無理矢理開くと「文字化け」しました。どうやらテキスト形式として読むようです。
(2)Excel 2007 SP1 の挙動
更に、書き込みパスワード付 Excel 2007 形式ファイル ( 拡張子 xlsx ) を改名して、拡張子を xls にした同じファイルを、元の Excel 2007 SP1 で開きます。
→ いきなり「パスワード」を聞かれます。パスワードを入力すると「拡張子の示す形式と異なります」云々と表示されますが、そのまま開くを選択すると、「正常に開かれます」。
・・・
暗号化された場合に 2003/2007 共通フォーマットかどうか、Excel の「挙動からは判別しかねます」と云うところでしょうか。
知っているつもりでもいざ他人から聞かれると「そういえばテストしてなかった」ってこと、結構ありますよね。
(覚え書き)
暗号化していない、とある xlsx ファイルの先頭:アドレス : 16進 : ASCII
00000000 : 50 4B 03 04 14 00 06 00 08 00 00 00 21 00 EB 7A : PK..........!..z
暗号化している、とある xlsx ファイルの先頭:
アドレス : 16進 : ASCII
00000000 : D0 CF 11 E0 A1 B1 1A E1 00 00 00 00 00 00 00 00 : ...爍...........
14バイト目まで("50 4B 03 04 14 00 06 00 08 00 00 00 21 00")がヘッダなんでしょうかね。
(関連)
http://d.hatena.ne.jp/TsuSUZUKI/20080126/1201317146
http://d.hatena.ne.jp/TsuSUZUKI/20071122/1195737767
http://d.hatena.ne.jp/TsuSUZUKI/20080221/1203577036
http://d.hatena.ne.jp/TsuSUZUKI/20070808/1186566978
いじょうです。
-
- -