2011年7月23日 星期六

橫山秀夫 - 繼承

這部作品早在兩個月前就該介紹的...實在是在下太懶了呀。

這部《繼承》是今年轉拍日劇的橫山秀夫短篇作品之一。故事中的主角是一名退休警官的兒子。其父親是警署中的紅人,曾經抓到犯下數起入室行竊的大盜賊。

主角常常被長官「虧」,請他拿出和他父親一樣的辨案能力。雖然如此,他和父親的感情還算不錯,常常到醫院看他中風過(大概是此病)的父親。而且,他也從父親手上繼承了許多辨案的技巧,其中也包括了許多線人、線索。

最近,那名大盜賊似乎又出來作案了。雖然一時間找不出證據,但是犯案手法如出一轍,主角肯定大盜賊就是主嫌。然而,主角最後卻發現,他除了繼承了父親的血脈與辨案工具外,還繼承了父親的「罪」...

這部作品在「繼承」上面的呈現非常有意思。許多喬段都是jackmis沒有看過的設計。就好像說到遺產繼承,人們就會想到繼承人將會有一筆收入,卻往往忘了繼承也包含了『債務』的繼承。說到這個,不知道法律修好沒有、通過沒有,讓『債務』的繼承更容易的放棄。

在這部作品裡,幾乎什麼都可以繼承。比如我們可以聽到,某姓和某姓不能通婚因為過去曾經結怨,這也是一種繼承。除了血脈之外,人的經驗、行為都可以繼承,繼承是超越遺傳,讓生命再度延續的奇妙事物。

看過本作後,我想讀者們可能不知道,除了你自己的身體,生長的環境外,可能還有更多你沒有注意到的事物已經繼承在你的身上了。

東野圭吾 - 布魯斯特的心臟

深受大眾喜愛的作家--東野圭吾的作品又被拍成日劇囉!而且,這次拍成日劇的作品是東野這幾年的創作《布魯斯特的心臟》喔!看來這部作品雖然年輕,但是已經受到相當的肯定了。

東野圭吾的成功也是經過一番寒徹。早期的作品是單純的本格推理小說,後來的作品則加入了探討犯罪的非本格內容。這條路讓他名利雙收,之後的《嫌犯X的獻身》更為他拿下了許多大獎。本作《布魯斯特的心臟》是近期作品,因此也對非本格的內容多加探討。

主人翁末永拓也是MM重工的新銳員工,他所開發的作業系統「布魯斯特」將會成為未來所有機器人的心臟。然而,這個幫機器人建立心臟的發明者,自己又有一顆什麼樣的心臟呢?

末永拓也一心想要成功。就在自己即將飛黃騰達的時候,公司裡一名與他有肉體關係的女子竟然懷孕了。這位女子和末永一樣想要成功,但是她所用的方式並非研發心臟,而是以子為貴。就在末永苦惱之際,公司裡面的幾個「受害者」悄悄接近他,向他兜售殺人的計劃。一個把他帶進惡夢深淵的計劃。

這部作品企圖探討人類的織組結構。基層的員工有時犧牲的多,得到的卻少。高高在上的人以為自己飄在天上,但其實和地上的人隔沒多遠,伸手一拉就被扯下來了。或許小說裡面把這些現象表示的比較明顯,可惜日劇裡面比較難深入研究。

這部作品的主角是由藤原龍也演出。是的,亦英雄亦狗熊的他,如同我對他戲路的看法,又一次成功的演出了末永拓也這個角色。我想,自從他演出夜神月這個角色後,喜歡看他使壞的應該大有人在。那麼,您可以開始去找這部作品來看了。藤原的演出一級棒呀。

東野圭吾 - 迴廊亭殺人事件

暢銷作家東野圭吾的作品這幾年來近屢獲讀者的喜愛。因此帶動一波將他的作品轉拍日劇的局面。最近一次的日劇化對準他的三部作品。《回廊亭殺人事件》就是其中一部。這部作品jackmis在書店裡看了三分之一。後來因為該書從書店下架的關係,所以jackmis就沒有看它。沒想到這次竟然有機會在日劇裡面看到。

日劇對本作有一些改篇,最大的改篇,就是女主角在原作中偽裝成一位老太太。但是日劇裡卻是一位年輕的女士。演員是好久不見的常盤貴子...其實她年齡也不小了。大概是老搭擋竹野內豐都復出,跑出來撈錢了,所以她也忍不住出來小賺一下了吧。

故事中的女主角在兩年前差點在日式的旅館中被燒死,身體受到嚴重的燒燙傷。警方研判兇手是女主角的情人為了與她殉情而打昏她,並在放火後自殺。逃出來的女主角知道這並非真相,因此在整容後決心找出兇手。然而,就在女主角深入虎穴時,一場新的殺人事件卻登場了。

這部作品的格局其實不大小,爆點只能算普通,屬於東野早期的作品,其詭計、故事結構都和現在的作品大相逕庭。可以很明顯的感覺到,本作是「上一個世代」的本格推理小說。這類推理小說比較保守,不會有太多華麗,不必要的情節與氣氛操作。但其實jackmis還蠻喜歡的。

比較特別的是,這部作品以小說而言,jackmis沒看完也感覺「算了」。但是拍成了日劇、由常盤貴子演出,這對jackmis來說造成了致命的吸引力。我想,對常盤貴子期待很久的觀眾們應該來看一看,看看常盤貴子的演技,和她令人羨慕的保養功力。

2011年7月18日 星期一

PKCS#1 unpadding

許多api都已經將unpadding綁在RSA的加解密功能裡。因此我們不常碰到自己解padding的情況。

而這個需求,jackmis就碰到了。

天呀,老師一定會覺得我玩完密碼學後真的學以致用了。(學密碼學的同學們出來很少有人再碰了)

以下介紹的PKCS#1 unpadding法,其實RSA實驗室的文件裡就有寫到。但是那篇文件轉來轉去,竟然把unpadding的部份省略了,jackmis就是那篇「簡化」過的文章的受害者。當然,也可能是RSA事後才補進去的。在下對這個歷史沒多大興趣,我們還是進入正題吧。有興趣的人也可以直接去RSA實驗室看原文。(我在這裡寫下來,是因為中文資源真的很少,讓小弟留下一些中文的資訊吧)

PKCS#1定義了RSA加解密的基礎規則。padding是用來補足資料長度,以便做RSA加密運算。當我們將密文解回來後,我們會看到一個落落長的資料。而明文,其實只是這個資料中的一部份。因此,我們要unpadding,跳過非資料的部份,取出我們所要的明文。

將密文正確解密後,應得到以下的資訊:
EB = 00 ∣∣ BT ∣∣ PS ∣∣ 00 ∣∣ D

「∣∣」是字串連接的意思。

EB是encryption block,就稱它為加密區塊吧。(因為我是讀加密的部份來看padding的方式,所以這裡的加密區塊,指的是,這串資料是準備要拿去加密的。)
開頭的00是1個十六進制的byte資料。
BT是block type,長度為1個byte。在文件中有00, 01與02三種。
PS就是重點的Padding字串,長度至少為8個byte。
然後再一個00。
D就是我們要取出來的明文。
整個EB的長度為128byte。文件中指稱可以擴張。

當BT為00時,我們要指定D的長度,或D的開頭必為00。如果知道D的長度,那當然就可以拿資料了(從後面拆),但走「D的開頭必為00」時要怎麼取D?這點jackmis還在想。也歡迎大家補齊。
BT為01或02時,必須確定PS中沒有00值。這樣的話只要從第10位byte(開頭的00+block type+至少8byte的PS)往後找到下一個00,之後的就是D了。

因為jackmis只用的到block type為02這種,所以其他沒研究...(人的一天只有24hr呀...),其他的,留給以後或各位幫忙囉。