çŸä»£ã®æ
å ±äžçã§ã¯ãæ
å ±ã¯äººéã®ç掻ã瀟äŒãåœå®¶ã«ãããŠéèŠãªåœ¹å²ãæãããŠããŸãã èç©ããã³åŠçãããããŒã¿ã®ãµã€ãºã®å¢å ã¯ããããã®ã¹ãã¬ãŒãžããã³æ©å¯æ§ã®ç¢ºä¿ã«ã€ããŠçåãæèµ·ããŸãã ãã®ãããªåé¡ã解決ããããã®æè¡çãªè§£æ±ºçãšææ¡ã¯ãã§ã«ãããããããŸãã ãã¡ãããä¿åãããããŒã¿ã®æå·åããµããŒãããããŒã¿ããŒã¹ç®¡çã·ã¹ãã ïŒDBMSïŒããããŸãã ããã¯ããããã®ãœãªã¥ãŒã·ã§ã³ã®1ã€ã§ãã
2016幎4æã
Firebird DBMSã®æ°ããããŒãžã§ã³ã3çªã§ãªãªãŒã¹ãããŸããããšããããä¿åããã³éä¿¡ãããããŒã¿ãä¿è·ããããã®å€ãã®ã¡ã«ããºã ãç»å ŽããŸããã ããŒã¿äŒéãã£ãã«ã®ä¿è·ããŠãŒã¶ãŒç®¡çããããããŒã¿ããŒã¹èªäœã®æå·åããããŸããããã¯ãããŒã¿ããŒãžã®ã¬ãã«ã§ééçãªæå·åãšããŠå®è£
ãããŸãã ããã¯ãã¹ãŠãFirebirdçšã®ç¹å¥ãªæ¡åŒµæ©èœãäœæããããšã§å®çŸãããŸãã ãã¡ãããèªåã§ãããçè§£ããŠãããã®æ¡åŒµæ©èœãæžãããšãã§ããŸããã
æ¢åã®æ¡åŒµæ©èœã䜿çšããŠã¯ãããŸãã ããã«ãå°ãªããšããæå·åãçè§£ããæå·åããã±ãŒãžã®ç¥èãåããæ°ããC ++ Firebird APIã«å¯ŸåŠããå¿
èŠããããŸãã
Windows x64ãã©ãããã©ãŒã çšã®ãã®
ãªã³ã¯ãããŠã³ããŒãããããšã«ãããæ¢åã®æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ã䜿çšã§ããŸãã ç¡æè©Šçšçã§ã¯ã䜿çšãããæå·åã¢ã«ãŽãªãºã ã«å¶éãããŸã
-Triple DESïŒ3DESïŒããµããŒããããŠããŸãã ãã ããããŒã¿ããŒã¹ãä¿è·ããã«ã¯ããã§ååã§ãã ãã®ããã±ãŒãžã«ã¯ãã€ã³ã¿ãŒãã§ãŒã¹ã®èª¬æãå«ã4ã€ã®ã©ã€ãã©ãªãšãã¡ã€ã«ãå«ãŸããŠããŸãã
ãã¡ã€ã«å | 説æ |
---|
CiKeyHolder.dll | Firebirdæ¡åŒµ-ç§å¯ããŒã㌠|
CiDbCrypt.dll | Firebirdæ¡åŒµ-ããŒã¿æå·å |
CiFbEnc_x86.dll | 32ãããæå·åããŒã¢ã¯ãã£ããŒã·ã§ã³ã¢ãžã¥ãŒã«ã |
CiFbEnc_x86-64.dll | 64ããããã©ãããã©ãŒã çšã®æå·åããŒã¢ã¯ãã£ããŒã·ã§ã³ã¢ãžã¥ãŒã«ã |
ICiFbEncActivator.h | C ++ã®ã¢ãžã¥ãŒã«ã€ã³ã¿ãŒãã§ã€ã¹ã®èª¬æ |
CI.ICiFbEncActivator.pas | Delphiã®ã¢ãžã¥ãŒã«ã€ã³ã¿ãŒãã§ã€ã¹ã®èª¬æ |
äŸãšããŠãç¹å®ã®ãã£ã¬ã¯ããªïŒæ¡ä»¶ä»ãã§æ©å¯ããŒã¿ãå«ãïŒã䜿çšããã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸããããã¯ãæŽæ°æã«ã°ããŒãã«ãããã¯ãŒã¯ã®ãªã³ã¯ãä»ããŠå©çšã§ããŸãã 誰ã§ãããŠã³ããŒãã§ããŸãããåæã«è§£èªã§ããã®ã¯ã¢ããªã±ãŒã·ã§ã³ã ãã§ãã
ããŒãååŸãããããŒã¿ããŒã¹ãã¡ã€ã«ãæŽæ°ãããããšãä¿èšŒããå¿
èŠãããããã®ãããªã¿ã¹ã¯ã®å®è£
ã®äžå¿
èŠãªè©³çްã§èšäºãä¹±éã«ããªãããã«ãããŒãããã°ã©ã å
ã®é
å倿°ãšããŠãããŒã¿ããŒã¹ãã¡ã€ã«èªäœã䜿çšããŠæå·åããããšæ³å®ããŸãã
ãã©ãããã©ãŒã ãšããŠWindows 10 x64ã䜿çšããã¿ã¹ã¯ãå®è£
ããããã®ããŒã«ãšããŠIDE Embarcadero RAD StudioïŒçŸåš10.2 Tokyoã¯30æ¥éã®è©ŠçšçãšããŠå
¥æå¯èœïŒã䜿çšããŸããã¢ããªã±ãŒã·ã§ã³ãœãªã¥ãŒã·ã§ã³ã®éçºçšïŒè©Šçšç
ã¯ãªã³ã¯ããããŠã³ããŒãã§ããŸãïŒããã³
Firebird 3.0.2 x64㯠ããã©ãããã©ãŒã ã®ãªã³ã¯
https://www.firebirdsql.org/en/firebird-3-0-2ããããŠã³ããŒãã§ããŸãã éçºã¢ãŒãã§åžžã«å®è¡ãããŠãããµãŒããŒãå¿
èŠãšãããæ°ååèµ·åããå¿
èŠãããå Žåããããããã€ã³ã¹ããŒã«äžã«ãµãŒããŒãã¢ããªã±ãŒã·ã§ã³ãšããŠèµ·åããæ¹æ³ãéžæããŸãã
å€ã
masterkey
ã§
SYSDBA
ã®ãã¹ã¯ãŒããå®è¡ããã€ã³ã¹ããŒã«åŸã«ãµãŒããŒãèµ·åããããã®ããã¯ã¹ããªãã«ããŸã-ãŸã å¿
èŠãããŸããã
Firebirdããã±ãŒãžãã€ã³ã¹ããŒã«ããããæ§æããå¿
èŠããããŸãã Firebirdãåã蟌ã¿ã¢ãŒãã§äœ¿çšããå Žåã䜿çšããã©ã€ãã©ãªã¯ã©ã€ã¢ã³ãfbclient.dllãé
眮ããããã£ã¬ã¯ããªã§åãèšå®ãè¡ãå¿
èŠããããŸãã åºæ¬èšå®ãã¡ã€ã«ã¯ãã€ã³ã¹ããŒã«ãããŠããFirebirdã®ã«ãŒããã£ã¬ã¯ããª-
%ProgramW6432%\Firebird\Firebird_3_0
ãŸãã
databases.confãã¡ã€ã«ã«ããŒã¿ããŒã¹ãšã€ãªã¢ã¹ïŒãšã€ãªã¢ã¹ïŒãç»é²ããå°æ¥ã®ããŒã¿ããŒã¹ãžã®ãã«ãã¹ã瀺ãè¡ã远å ããŸãã
TESTDB = C:\TESTAPP\DB\TESTDB.FDB
FirebirdãããŒãæ¢ãå Žæãç¥ãã«ã¯ã
KeyHolderPlugin
ãã©ã¡ãŒã¿ãŒãå®çŸ©ããå¿
èŠããããŸãã äžèšã®ãšã€ãªã¢ã¹å°çšã«æå®ããããfirebird.confãã¡ã€ã«ã§æå®ã§ããŸãã firebird.confãã¡ã€ã«ã®æ§æãã©ã¡ãŒã¿ãŒã远å ãŸãã¯å€æŽããŠããã©ã°ã€ã³ãç§å¯éµã®ç®¡çè
ãšããŠå®çŸ©ããŸãã
KeyHolderPlugin = CiKeyHolder
ãã©ã°ã€ã³ãæ¢ãå ŽæFirebirdã¯æ§æãã¡ã€ã«ãããåŠç¿ããŸãã æ¬¡ã®è¡ã远å ããŠãplugins.confãã¡ã€ã«ã倿ŽããŸãã
Plugin = CiKeyHolder { # Module = $(dir_plugins)/CiKeyHolder } Plugin = CiDbCrypt { # Module = $(dir_plugins)/CiDbCrypt }
ãšã€ãªã¢ã¹$ïŒdir_pluginsïŒã®äžã®ãã£ã¬ã¯ããªã¯ãFirebirdã«ãŒããã£ã¬ã¯ããªå
ã®ãã©ã°ã€ã³ãã£ã¬ã¯ããªãåç
§ããŸãã 以åã«ããŠã³ããŒããããã©ã°ã€ã³CiKeyHolder.dllããã³CiDbCrypt.dllãããã«ã³ããŒããŸãã
ãã§ã«ããŒã¿ããŒã¹ã¬ã€ããããããšãåæãšããŠãããããFirebirdããã±ãŒãžã䜿çšããŠãã€ãŸãisqlã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠäœæããŸãã
Win + R
ãã¯ãªãã¯ããŠã次ã®ã³ãã³ããå®è¡ããŸãã
%ProgramW6432%\Firebird\Firebird_3_0\isql -q -user SYSDBA -password masterkey
ãŸãã¯ãäœããã®æ¹æ³ã§ãããšãã°Farããã°ã©ã ã䜿çšããŠisqlãç°ãªãæ¹æ³ã§èµ·åããŸãã
以äžã®ã³ãã³ãã¯ãèšå®ã§ãšã€ãªã¢ã¹ã以åã«æå®ãããTESTDBããŒã¿ããŒã¹ãäœæããäœæãããããŒã¿ããŒã¹ã«é¢ããæ
å ±ã衚瀺ããŸãã
SQL> create database 'TESTDB'; SQL> create table t_1 (i1 int, s1 varchar(15), s2 varchar(15)); SQL> insert into t_1 values (1,'value 1-1','value 1-2'); SQL> insert into t_1 values (2,'value 2-1','value 2-2'); SQL> commit; SQL> select * from t_1; I1 S1 S2 ============ =============== =============== 1 value 1-1 value 1-2 2 value 2-1 value 2-2 SQL> show db; Database: TESTDB Owner: SYSDBA PAGE_SIZE 8192 Number of DB pages allocated = 196 Number of DB pages used = 184 Number of DB pages free = 12 Sweep interval = 20000 Forced Writes are ON Transaction - oldest = 4 Transaction - oldest active = 5 Transaction - oldest snapshot = 5 Transaction - Next = 9 ODS = 12.0 Database not encrypted Default Character set: NONE SQL> quit;
show db;
ã³ãã³ãã§åä¿¡ããæ
å ±ãããããããã«
show db;
ãäœæãããããŒã¿ããŒã¹ã¯çŸåšæå·åãããŠããŸãã-
Database not encrypted
ã
ããã§ãã¹ãŠãèšå®ãããã¢ããªã±ãŒã·ã§ã³ã®äœæãéå§ã§ããŸãã
Embarcadero RAD Studio IDEã§æ°ããVCLãã©ãŒã ã¢ããªã±ãŒã·ã§ã³ãããžã§ã¯ããäœæããŠããŸãã ããšãã°ããããžã§ã¯ãããã£ã¬ã¯ããªCïŒ\ TESTAPPã«testappãšããŠä¿åããŸãã
ãŸããã¢ããªã±ãŒã·ã§ã³ãããŒã¿ããŒã¹ã«é¢é£ä»ããã ãã§ãããŒã¿ããŒã¹ãžã®æ¥ç¶ãšåæãæäŸã§ããŸãã ãã¹ãããŒã¿ããŒã¹ã«ã¯1ã€ã®ããŒãã«ããããæ¥ç¶æã«ããŒã¿ã衚瀺ã§ããŸãã èŠèŠçãªãã¶ã€ã³ããããã¿ã³ãããŒãã«ãããŒã¿ç®¡çæ©èœä»ãã®ããã²ãŒã¿ãŒãããã°ååã§ãã FirebirdããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããã«ã¯ãFireDACã³ã³ããŒãã³ãã䜿çšããŸãã 以äžã¯ãã³ã³ããŒãã³ããšãã®ã«ã¹ã¿ãã€ãºå¯èœãªãã©ã¡ãŒã¿ãŒãå«ã衚ã§ãã
ãã¹ãã¢ããªã±ãŒã·ã§ã³ãã©ãŒã ã«é
眮ãããã³ã³ããŒãã³ãã³ã³ããŒãã³ãã¯ã©ã¹ | ã³ã³ããŒãã³ãå | ãã©ã¡ãŒã¿ | ãã©ã¡ãŒã¿å€ |
---|
TFDPhysFBDriverLink | FDPhysFBDriverLink1 | - | - |
TFDConnection | Fdconnection1 | ãã©ã€ããŒå | Fb |
LoginPrompt | åœ |
ãã©ã¡ãŒã¿\ããŒã¿ããŒã¹ | testdb |
Params \ UserName | ã·ã¹ã |
ãã©ã¡ãŒã¿\ãã¹ã¯ãŒã | ãã¹ã¿ãŒã㌠|
ãã©ã¡ãŒã¿\ãããã³ã« | ipTCPIP |
ãã©ã¡ãŒã¿\ãµãŒã㌠| ããŒã«ã«ãã¹ã |
TFDGUIxWaitCursor | FDGUIxWaitCursor1 | - | - |
TFDTransaction | FDTransaction1 | - | - |
TFDTable | FDTable1 | ããŒãã«å | T_1 |
TDataSource | DataSource1 | ããŒã¿ã»ãã | FDTable1 |
TDBGrid | DBGrid1 | ããŒã¿ãœãŒã¹ | DataSource1 |
TDBNavigator | DBNavigator1 | ããŒã¿ãœãŒã¹ | DataSource1 |
TButton | Button1 | ãã£ãã·ã§ã³ | ã€ãªã |
TButton | Button2 | ãã£ãã·ã§ã³ | åæãã |
ãã®çµæããã©ãŒã ã¯æ¬¡ã®ããã«ãªããŸãã
[æ¥ç¶]ãã¿ã³ãã¯ãªãã¯ããåŠçãèšè¿°ããŸãããã
FDConnection1->Connected = true; FDTable1->Active = true;
ãåæãã®å ŽåïŒ
FDTable1->Active = false; FDConnection1->Connected = false;
Delphiã䜿çšããå Žåããã¹ãŠãé¡äŒŒããŠããŸãïŒ
FDConnection1.Connected := True; FDTable1.Active := True; . . . FDConnection1.Connected := False; FDTable1.Active := False;
ããŒã¿ããŒã¹ã«æ¥ç¶ããåã«ããµãŒããŒãèµ·åããå¿
èŠããããŸãã ãããè¡ãã«ã¯ãadminã³ãã³ãã©ã€ã³ãåŒã³åºããŸãã
Win + X â ()
ãããŠãã³ãã³ããå®è¡ããŸãïŒ
â%ProgramW6432%\Firebird\Firebird_3_0\firebirdâ âa
å®è¡äžã®ãµãŒããŒã®ã¢ã€ã³ã³ããã¬ã€ã«è¡šç€ºãããŸãã ãã®ã¢ã€ã³ã³ã§åŒã³åºãããã³ã³ããã¹ãã¡ãã¥ãŒãããäœæ¥ãçµäºããããå®è¡äžã®ãµãŒããŒã®ããããã£ã衚瀺ãããã§ããŸãã
ããã§ãã¢ããªã±ãŒã·ã§ã³ããã«ãããŠå®è¡ããããŒã¿ããŒã¹ãžã®æ¥ç¶ã確èªã§ããŸãã ããŒã¿ããŒã¹ã«æ¥ç¶ãããšãããŒã¿ãããŒãã«ã«è¡šç€ºãããŸãã
ããŒã¢ã¯ãã£ããŒã·ã§ã³ããã³æå·å管çã¢ãžã¥ãŒã«ãã¢ããªã±ãŒã·ã§ã³ã«æ¥ç¶ããŸãã ãããè¡ãã«ã¯ããã¡ã€ã«CiFbEnc_x86.dllããã³ICiFbEncActivator.hãCI.ICiFbEncActivator.pasããã£ã¬ã¯ããªCïŒ\ TESTAPPã«ã³ããŒããŸãã ããã©ã«ãã§ã¯32ãããWindowsçšã®ãããžã§ã¯ããéçºç°å¢ã§äœæãããéçºç°å¢ã®è©Šçšçã§ã¯ã¿ãŒã²ãããã©ãããã©ãŒã ã倿Žã§ããªããããã¢ããªã±ãŒã·ã§ã³ã«ã¯CiFbEnc_x86.dllãã¡ã€ã«ã¢ãžã¥ãŒã«ãå¿
èŠã§ãã
ããããŒãã¡ã€ã«ãšã¢ã¯ãã£ããŒã·ã§ã³ã¢ãžã¥ãŒã«ã€ã³ã¿ãŒãã§ã€ã¹ã®èª¬æãã¢ããªã±ãŒã·ã§ã³ãã¡ã€ã«ã«æ¥ç¶ããŸãã
#include "ICiFbEncActivator.h"
ãŸãã¯ãDelphiã®å Žåã¯Ci.ICiFbEncActivator.pasãã¡ã€ã«ã
uses . . . , CI.ICiFbEncActivator;
ãæå·åããã埩å·åãããç¶æ
ã®ååŸãã®3ã€ã®ãã¿ã³ããã©ãŒã ã«è¿œå ããŸãã
æåã«ããç¶æ
ã®ååŸããã¿ã³ãã³ãã©ãæ€èšããŸãã ååã«ç±æ¥ãããã®ã¯ãããŒã¿ããŒã¹ã®çŸåšã®ç¶æ
ãååŸããæ©äŒãäžããŠãããŸãã
æãéèŠãªããšã¯ãã¢ã¯ãã£ããŒã·ã§ã³ã¢ãžã¥ãŒã«ã®ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¢ã¯ã»ã¹ããããšã§ãã ãªãã¬ãŒã·ã§ã³ããšã«åä¿¡ããããšããã°ããŒãã«ã«ããŸãã¯ç¹å®ã®ãªããžã§ã¯ãã«éçŽããŠåä¿¡ããããšãã§ããŸãã ã©ãããŒã¯ã©ã¹ãå§åããªãããã«ãåæäœã«å¯ŸããŠã¢ã¯ãã£ããŒã·ã§ã³ã¢ãžã¥ãŒã«ãªããžã§ã¯ããååŸããããšãæ³å®ããŸãã 以äžã¯ããããè¡ã1ã€ã®å¯èœãªæ¹æ³ã§ãã
ããã«ããã¿ã³ãã¯ãªãã¯ããããã®åãã³ãã©ãŒã«å¯ŸããŠãäžèšã®ã³ãŒãã远å ããããšæ³å®ããŸãã
ããã§ãããŒã¿ããŒã¹ã®ç¶æ
ãååŸã§ããŸãã
ããŒã¿ããŒã¹ã«æ¥ç¶ããŠæ
å ±ãååŸã§ããå ŽåãçŸåšã®ç¶æ
ã«é¢ãã詳现æ
å ±ãå«ãã¡ãã»ãŒãžã衚瀺ãããŸãã
ã芧ã®ãšãããããŒã¿ããŒã¹ã¯ãŸã æå·åãããŠããŸããã ãããä¿®æ£ããæãæ¥ãŸããã ãã ããæå·åã«ã¯ããŒãå¿
èŠã§ãã ãããŠãäŸã®ãã¬ãŒã ã¯ãŒã¯ã§ã°ããŒãã«å®æ°ãšããŠå®çŸ©ããŸãã
ããŒã¿ããŒã¹ã®çŸåšã®ç¶æ
ãååŸããããšã«å ããŠãæå·åã埩å·åãæå·åãããããŒã¿ãžã®ã¢ã¯ã»ã¹ãªã©ã®ä»ã®ãã¹ãŠã®æäœã«ã¯ãç§å¯éµã®ã¢ã¯ãã£ããŒã·ã§ã³ãå¿
èŠã§ãã ãããè¡ãã«ã¯ãã¢ã¯ãã£ããŒã·ã§ã³ã¢ãžã¥ãŒã«ãªããžã§ã¯ããåãåã£ãåŸã«æ¬¡ã®ã³ãŒãã远å ããŸãã
ã芧ã®ãšãããããŒã¯ã¢ã¯ãã£ããŒã¿ãŒã«è»¢éãããã¢ã¯ãã£ããŒã·ã§ã³é¢æ°ãåŒã³åºãããŸãã ãã®å Žåãã¢ãžã¥ãŒã«ã¯ãããŒããŒããŒã®æ¡åŒµæ©èœã䜿çšããŠããŒã«ã¢ã¯ã»ã¹ããããã®ã³ãŒã«ããã¯é¢æ°ãç»é²ããŸãã ãŸããFirebirdã®åäœã¢ãŒãã«äŸåããŸããã ãŸããããŒéä¿¡ã®ã»ãã¥ãªãã£ã¯ãã»ãã·ã§ã³ããŒã®æå·åã«ãã£ãŠä¿èšŒãããŸãã äžèšã®ã³ãŒãã§ã¯ãã¢ã¯ãã£ããŒã·ã§ã³é¢æ°ãåŒã³åºããåŸãFirebirdã©ã€ãã©ãªã¬ãã«ã§çºçããå¯èœæ§ã®ãããšã©ãŒã®åŠçäŸã瀺ããŠããŸãã åæ§ã«ãFirebirdæ©èœã«ã¢ã¯ã»ã¹ã§ããæäœã®å®äºããã¿ã¹ã¯ã®çŸåšã®ã¹ããŒã¿ã¹ãèªã¿åãããšãã§ããŸãã
ããã§ããæå·åããã¿ã³ãšã埩å·åããã¿ã³ã®ãã³ãã©ãŒãäœæã§ããŸãã å®äºããã¿ã¹ã¯ã®ã¹ããŒã¿ã¹ãšããŒã®äºåã¢ã¯ãã£ããŒã·ã§ã³ã®ãã§ãã¯ãçç¥ããå Žåãåãæ©èœã®ã¢ã¯ãã£ããŒã·ã§ã³ãªããžã§ã¯ããžã®åŒã³åºãã远å ããã ãã§ãã
ãã®çµæã1åã®åŒã³åºããé€ããåäžã®ãã³ãã©ãŒãååŸããŸãã
ããã§ãããŒã¿ããŒã¹ãæå·åã§ããŸãã 圌女ã®ã¹ããŒã¿ã¹ãåŒã³åºããšã圌女ã¯ãã§ã«æå·åãããŠããããšãããããŸãã
ãã®åŸããæ¥ç¶ããã¿ã³ã®ãã³ãã©ã倿Žããã«ããŒã¿ããŒã¹ã«æ¥ç¶ããããšãããšããšã©ãŒãçºçããŸãã
æåŸã®ã¹ãããã¯ãããŒã¿ããŒã¹æ¥ç¶ãã¿ã³ã®ãã³ãã©ãŒã倿Žããããšã§ãã ããã§ãã¢ãžã¥ãŒã«ã€ã³ã¿ãŒãã§ã€ã¹ãªããžã§ã¯ãã®åä¿¡ãšã¢ã¯ãã£ããŒã·ã§ã³ããŒåŒã³åºãã远å ããå¿
èŠããããŸãã 以äžã¯ãæå·åãããããŒã¿ããŒã¹ãžã®æ¥ç¶ãåŠçããããã®å®å
šãªã³ãŒãã§ãã
ãããã£ãŠãæå·åãããããŒã¿ããŒã¹ãæäœããã®ã¯éåžžã«ç°¡åã§ãã
å®å
šãªãããžã§ã¯ãã¯
ããã§ååŸã§ã
ãŸã ã
ãã¢ããã±ãŒãžã¯
ãã¡ãã§ãã