做程序員,是一種職業,更是一種興趣和愛好,許多朋友相信都有獨自解決問題時的那種成就感,如果那問題,是百度不到,或者無任何范例參考而解決的,那享受到的可謂是幸福了。
如果你未感受以上說的那種成功,那只能說是你還未積累足夠的基礎。因為要靠自己能力去解決問題,而無任何指導,那基礎知識是非常重要。
像BASE64、UNICODE、UTF8、GB2312概念等,我相信沒一個程序員會不知道。但以下的經歷,相信連百度、GOOGLE都不會搜得到任何幫助,完全就是靠這些基本理論來解決一個看似“簡單”的問題。
我的網站 www.08178.com里,在導航欄上有個 "足球比分直播" 的板塊,里面是動態的實時比分直播,里面的數據來源于國外的網站。上個月該網站改版了,需要登錄才可以訪問,且還需要個類似KEY的東東,其實就一段字符 串,字符串由一大堆用戶信息之類的,需要進行破解,方可以訪問到信息。如下就是通過反編譯得出的加密核心函數。本以為按語法翻譯一下,就可以解密,但足足 花了我一天的時間,搞得焦頭爛額,最后還是基礎的積累,讓我跨過了這道難關。
破解算法時,使用到了UTF8和UNICODE的基礎知識,在最容易讓人忽略的字節大小問題上,栽了跟頭,看似簡單的問題,其實在做語言搬遷時,最容易讓人無從捉摸,網上也查不到什么有價值的幫助信息。附上加密函數,給有興趣的朋友看看。
總之,重視讓你覺得簡單的知識,你不會吃虧的,朋友!
private static function encode(*:String, *:int):String{
var _local3:Base64Encoder = new Base64Encoder();
_local3.encode(xor(*, *));
return (_local3.flush());
}
private static function xor(*:String, *:int):String{
var _local3:String = KEY10.toString();
var _local4:String = new String();
var _local5:Number = 0;
while (_local5 < *.length) {
_local4 = (_local4 + String.fromCharCode((*.charCodeAt(_local5) ^ _local3.toString().charCodeAt(((_local5 + *) % _local3.toString().length)))));
_local5++;
};
return (_local4);
}