PageRank



轉移公告

計劃把 http://blog.hoamon.info/ 文章全部轉移至 http://www.hoamon.info/blog/ 這裡,而本 Blogger 站台的文章近 500 篇,我預計在 2014-12-31 前移轉完畢,完成後 http://blog.hoamon.info/ 將只作代轉服務,一律把舊連結如 http://blog.hoamon.info/index.html 轉成 http://www.hoamon.info/blog/index.html ,敬請舊雨新知互相走告。

新文章只發佈在 http://www.hoamon.info/blog/

何岳峰 敬上
顯示具有 php 標籤的文章。 顯示所有文章
顯示具有 php 標籤的文章。 顯示所有文章

2009年12月3日 星期四

要賣 9 本 Perl 的書(再補一本,共 10 本)


請上露天拍賣網址(結標時間:2010-01-0213:56)

書籍近照:

底價定 300 元,只要是郵資費夠,我就賣掉。

為什麼要賣掉呢? 因為我想我不會再研究 Perl 了吧! 過去,我剛入門 Linux 的時候,那時系統管理員最好用的工具語言是 Perl ,所以為了把 Linux 管好,我花了不少心力學它, Perl 幫助我找到人生中的第一份工作。但是後來,約五年前,我開始常寫網頁系統時,卻無法拿它來用,那時還沒流行 Web Framework ,所以我當然不知道有 Catalyst 的存在,於是我學了 PHP ,用它來寫網頁。

那時的我是 PHP/Perl 兩頭玩,直到兩、三年前, Ruby on RailsDjangoTurboGears 的出現,我才開始認真地想把「系統管理」、「網頁設計」及「學術研究」的工作用同一種語言來解決,最後選的是 Python + Django ,因為 Python 當時的數學函式庫比 Ruby 豐富,所以我們老大就說用 Python 好了,雖然那時我是比較想用 Ruby on Rails 的,當時 Rails 的氣焰比較高。

不過,現在看來,選擇 Python 應是比較符合我的個性,因為我個人是比較龜毛,喜歡 SOP (標準作業程序),所以過去用 Perl 時,有太多種表現的手法後,在我個人寫的程式上,風格十分隨便,反正看不懂了,就再寫一個,而這點, Ruby 的特性就有點類似 Perl 了。

也是用了 Python 後,我才發現過去喜愛 Perl 的程度,不如我以為的那樣高。這讓我想到重慶森林裡的廚師莎拉與炸魚薯條的故事:「沒有嘗試過,你如何知道真正喜歡的是什麼」。所以,我想把這些 Perl 相關的書籍留給其他適合的讀者。願意作它們的新主人嗎?

= 後記 =

已全賣出。

2007年3月21日 星期三

Python及PHP的公私鑰加密方法

昨天費了好大的一番勁,終於可以在 Python 中作公私鑰的處理,忙完了 Python 這邊,再往 PHP 去作,居然只花30分鐘。這最大的原因我想是出在一開始我完全不知道加解密該如何處理,所以我有些時間是花在私錀加解密上,而且 Python 這邊的模組還真是多,我試玩了 5 個,才找到我要的東西。分別是:
  1. python-crypto - 這個模組是基本模組,使用的函式太複雜了,不會用。
  2. ezPyCrypto - 這個簡單些了,但他作出來的公私鑰無法與其他程式相容(這一點,我也不知道為什麼)。
  3. SSLCrypto - 與 ezPyCrypto 是相同作者,而這個模組的效率比 ezPyCrypto 好。但一樣不能與其他程式相容。
  4. pyopenssl - 作者說他不欣賞 M2Crypto 與 SWIG 介接的方式,是的,我也不欣賞。但 pyopenssl 似乎是用 https 通訊上的,而我找不到加解密的用法。
  5. M2Crypto - 終於讓我找到了。但它有一大缺點。它底層是用 SWIG 來與 OpenSSL 介接的,而 SWIG 程式在 Windows 上非常難裝。
M2Crypto 在 ubunto 6.06.01 及 fedora core 5 中都有了。只是我還是用 PyPi 上的 0.17 版。而安裝方式是:
  • 先安裝 python2.4-pyrex 、 libssl-dev 、 swig 。
  • 到 m2crypto 資料夾執行 sudo python setup.py install
接下來,測試 M2Crypto 模組,因為我希望這個模組所用的公私鑰可與其他程式互動,所以用 openssl 來產生公私鑰。產生方法:

# openssl genrsa -out rsaprivate.pem 2048
# openssl rsa -in rsaprivate.pem -out rsapublic.pem -pubout -outform PEM

這樣我們就有兩支鑰匙了。接下我們用 Python with 私鑰 加密。

from M2Crypto import RSA

def test_encrypt(padding):
----msg="The magic words are squeamish ossifrage."
----priv=RSA.load_key('rsaprivate.pem')
----padding=eval('RSA.'+padding)
----ctxt=priv.private_encrypt(msg, padding)
----file = open(' c.txt', 'wb')
----file.write(ctxt)

if __name__ == '__main__':
----test_encrypt('pkcs1_padding')

我們得到了 c.txt 這個加密檔。好了,接下來,要到 Windows 去冒險了。

請先安裝 openssl.exe ,版本須大於 0.9.8 喔~
接下來設定 php.ini ,把 ;extension=openssl.dll 的註解拿掉,重新啟動 Apache2 。這樣你的 PHP 就多了 openssl 相關函式庫了。

接下來執行下面的 PHP 程式,它會用公鑰來解密,最後會得到「String decrypt : The magic words are squeamish ossifrage.」。恭喜你啦。公私鑰加解密就這麼簡單。

<?php
$fp=fopen ("rsapublic.pem","r");
$pub_key=fread($fp,8192);
fclose($fp);
$fp=fopen ("c.txt","r");
$crypttext=fread($fp,8192);
fclose($fp);
openssl_get_publickey($pub_key);
openssl_public_decrypt($crypttext,$newsource,$pub_key);
echo "String decrypt : $newsource\n";
?>

2007年1月22日 星期一

資料結構重於演算法

引言:「萬丈高樓平地起。」

曾有個程式宗師說:「只讓我了解你程式的演算法,我是無法得知你程式的資料結構。但讓我了解你的資料結構,我大概也知道了你的演算法。」
這可說明了演算法是依附在資料結構上的。

閱讀更多…
Related Posts Plugin for WordPress, Blogger...