2008年12月31日 星期三

ANSI & Unicode In VC

Microsoft 將 printf 函數增加了一些特殊的類型。
其中有些類型尚未被ANSI C採用。新類型使你能夠很容易地對ANSI和Unicode字元和字串進行混合和匹配。
作業系統的wsprintf函數也得到了增強。
下面是一些例子(請注意大寫S和小寫s的使用)

char szA[100]; //An ANSI string buffer
WCHAR szW[100]; //A Unicode string buffer

// Normal sprintf: all strings are ANSI
sprintf(szA,"%s","ANSI Str");

// Converts Unicode string to ANSI
sprintf(szA,"%S",L"Unicode Str");

// Normal swprintf: all strings are Unicode
swprintf(szW,L"%s",L"Unicode Str");

// Converts ANSI string to Unicode
swprintf(szW,L"%S","ANSI Str");

簡單來說 當前後文字編碼不同的時候S就必須是要大寫.

2008年12月26日 星期五

Joomla 1.5 密碼加密方式

Joomla 是什麼東西?

Joomla!是一套在國外相當知名的內容管理系統(Content Management System, CMS),它屬於Portal(商業入口網站)類型,顧名思義,就是比較適合作為商業類型的網站程式。

以上都是廢話.

這次接觸到一個案子想使用Joomla的會員資料庫來提供給其他程式使用
因為這邊就Joomla的加密方式進行解說.

直接到會員的資料庫,打開 jos_users 資料表

可以看到許多的會員資料

我以其中一例來解釋

username 這個是登入時帳號 假設此例為 user
password 這是加密過後的密碼,內容為 aaf46cc5d440c95661a836568145e64f:n1JCmx1gjwzwBpFD1ntrf86kutwTnYoP

password的部份我們可以發現中間有用:分開成為兩個部分

1.aaf46cc5d440c95661a836568145e64f
2.n1JCmx1gjwzwBpFD1ntrf86kutwTnYoP (此為一開始建立使用者時亂數產生)


只要將此加密碼切割後串接在原本明碼的後面

使用者user的密碼(明碼)為mypass

經串接後成為
mypassn1JCmx1gjwzwBpFD1ntrf86kutwTnYoP

在利用md5加密此字串,即可得到Hash Code => aaf46cc5d440c95661a836568145e64f

經比對後 如果新產生的Hash跟原本資料庫內的密碼前半段相同
aaf46cc5d440c95661a836568145e64f == aaf46cc5d440c95661a836568145e64f

代表密碼正確

2008年12月2日 星期二

MySQL基本操作

在使用command line操作時的使用方法

使用下方指令進入mysql用戶端
>mysql -u root -p
按 Enter
Password:
輸入你的 mysql 密碼。


一、建立資料庫
mysql> create database temp;
按 Enter

建立名為 temp 的資料庫。

二、列出所有資料庫
mysql> show databases;
按 Enter

就會列出這台 MySQL 主機中,所有的資料庫名稱。

三、選擇要使用的資料庫:

在 mysql 提示,輸入:
mysql> use temp;
按 Enter

四、建立資料表:
在mysql>下輸入:
CREATE TABLE `member` (
`mem_id` int(11) NOT NULL auto_increment,
`account` varchar(25) NOT NULL,
`password` varchar(32) NOT NULL,
PRIMARY KEY (`mem_id`)
) ENGINE=MyISAM DEFAULT CHARSET=big5 AUTO_INCREMENT=1;

按 Enter
MySQL 就會在現在所選用的資料庫,產生一個 member 資料表。


五、秀出資料表的欄位資料:
mysql> show columns from temp;
or
mysql> describe temp;

按 Enter

六、刪除資料表:
mysql> drop table Test;
按 Enter

MySQL 就會刪除 Test 資料表。

七、刪除資料庫:
mysql> drop database temp;
按 Enter

MySQL 就會刪除 temp 資料庫。

八、匯入sql檔案
mysql> source ;

九、經由外部的方式匯入或匯出資料庫
備份 SQL data:
>mysqldump -u 使用者名稱 -p –default-character-set=utf8 資料庫名稱 > temp.sql

匯入 SQL data:
>mysql -u 使用者名稱 -p 資料庫名稱 < temp.sql