рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ SQLite DBMS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред
рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рдХрднреА-рдХрднреА рдПрдХ рдкреВрд░реНрдг DBMS рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢рд╛рдпрдж рд╣реА рдХреБрдЫ рд╕реМ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрдИ рд╕реМ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХреЗ DBMS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдо рд╕реЗ рдХрдо рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрддрдГ рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рддреБрд░рдВрдд рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред
SQLite рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдорд╛рдорд▓рд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЫреЛрдЯрд╛ рд╣реИ - рдХреЗрд╡рд▓ рдХреБрдЫ рд╕реМ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ, рдХреЙрдореНрдкреИрдХреНрдЯ рдЕрд╕реЗрдВрдмрд▓рд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдврд╝рд┐рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрддред рджреВрд╕рд░реЗ, рдпрд╣ рдПрдХ рдЕрд▓реНрдЯреНрд░рд╛-рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдо рд╣реИред рдЙрд╕реЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯрд┐рдВрдЧ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЦреИрд░, рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП - рдЕрдВрддрд┐рдо рдирд╣реАрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ AsmBB рдлреЛрд░рдо рдЗрдВрдЬрди рдореЗрдВ SQLite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА Habr├й рдкрд░ рд▓рд┐рдЦрд╛ рдерд╛ред (рд╡реИрд╕реЗ, рдЙрд╕рдХреЗ рдмрд╛рдж рд╡рд╣ рдирд╣реАрдВ рдЧрд┐рд░рд╛ )ред
рдЙрд╕ рд╕рдордп рд╕реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реА рд╣реИред рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рджрд┐рдЦрд╛рдИ рджреА рд╣реИрдВ, рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИред
рдФрд░ рдлрд┐рд░ рдПрдХ рджрд┐рди рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫреА рд╕реБрд░рдХреНрд╖рд╛ рдХреИрд╕реЗ рдмрдврд╝рд╛рдИ рдЬрд╛рдПред рдФрд░ рдореИрдВрдиреЗ рддреБрд░рдВрдд рд╕реЛрдЪрд╛ рдХрд┐ рдлреЛрд░рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рднрд▓реЗ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реАрдХ рд╣реЛ, рдХрд┐рд╕реА рдХреЛ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрдИ SQLite рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдПрд╕рдИрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореБрдлреНрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдкреИрд╕реЗ рдХреЗ рд▓рд┐рдП рдмреЗрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рдкрд╡рд┐рддреНрд░ рд╕реНрдерд╛рди рдХрднреА рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рддреБрд░рдВрдд SQLeet рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИред рдФрд░ рдЗрд╕рдореЗрдВ рдореБрдЭреЗ рд╕рдЪрдореБрдЪ рд╕рдм рдХреБрдЫ рдкрд╕рдВрдж рдЖрдпрд╛ред
SQLeet рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ChaCha20 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА 16-рдмрд╛рдЗрдЯ рдирдордХ рдФрд░ 12345 рд╣реИрд╢ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PBKDF2-HMAC-SHA256 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, Poly1305 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
SQLeet рдФрд░ SQLite рджреЛрдиреЛрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди) рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓рд╛рдЗрд╕реЗрдВрд╕рд┐рдВрдЧ рдЕрд░рд╛рдЬрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдлрд┐рд░ рднреА SQLeet рдмрд╣реБрдд рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИред рд╕рднреА рдХреЛрдб рдХреЗрд╡рд▓ рд╕реА рдореЗрдВ рд▓рдЧрднрдЧ рдбреЗрдврд╝ рд╣рдЬрд╛рд░ рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рдХреЛрдИ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИ рдФрд░ рд▓реЗрдЦрдХ рддреБрд░рдВрдд рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ рдФрд░ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдХреЛрдИ рд╣реЛред
SQLeet рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ SQLite - рдПрдХ рдПрдХрд▓ C рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рдмрд╕ рдЙрд╕реА рддрд░рд╣ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ SQLite рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ SQLite рдХреЛрдб рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЦреНрдп DBMS рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - sqlite3.c
рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрдЧрд╣ рдФрд░ рд╕рдВрдпреБрдХреНрдд рд╕реНрд░реЛрдд рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ред
рдЪреВрдВрдХрд┐ рдореИрдВ AsmBB рдореЗрдВ рдХрд╛рдлреА рдорд╛рдирдХ рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ (AsmBB рдореЗрдВ SQLite рдХреЛ MUSL libc рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдФрд░ рдореИрдВ C рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдирд╣реАрдВ рд╣реВрдВ, рдореЗрд░реЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди рдХреА рд╕рд╛рджрдЧреА рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ bash рдХреЛрдб рд╣реИ рдЬреЛ рдореИрдВ SQLeet рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд╕реНрд░реЛрдд рдмрдирд╛рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
wget -q -O - https://github.com/resilar/sqleet/archive/master.tar.gz | tar -xz cd ./sqleet-master script/amalgamate.sh < ./sqleet.c > ../sqlite3.c cd .. rm -rf ./sqleet-master/
рдкрд░рд┐рдгрд╛рдо рдПрдХ sqlite3.c
рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореВрд▓ SQLite рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╣рд▓реЗ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрд╕реА рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА SQLite рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж sqlite3_key () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдареАрдХ рд╣реИ, рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░, рдмрд╕ SQL pragma key='%%'
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред (рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ SQLite API рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ рдФрд░
рдЖрдк рд╣рдореЗрд╢рд╛ SQLeet рдХреЛ SQLite рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд) рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкрд╛рд╕рд╡рд░реНрдб рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ, sqlite3_rekey()
рдлрд╝рдВрдХреНрд╢рди рдпрд╛ pragma rekey='%NEW_PASSWORD%'
ред
рдФрд░ рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдРрд╕рд╛ рд╕рд╡рд╛рд▓ рдерд╛ред рдкрд╛рд╕рд╡рд░реНрдб рдХрд╣рд╛рдБ рд╕реЗ рдЖрддрд╛ рд╣реИ? рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрджрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╣реИрдХрд░ рдЗрд╕реЗ рдкрдврд╝ рд╕рдХреЗрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ AsmBB рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ FastCGI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рдПрдХ рдмрд╛рд░ рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд░рд┐рдмреВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдорд╣реАрдиреЛрдВ рдФрд░ рд╡рд░реНрд╖реЛрдВ рддрдХ рдЪрд▓рддрд╛ рд╣реИред
рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдмрд╕ AsmBB рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд╛рд╕рд╡рд░реНрдб рдХреЗрд╡рд▓ рд░реИрдо рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХреЗ рджреМрд░рд╛рди POST рдЕрдиреБрд░реЛрдз рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рдиред (рдмреЗрд╢рдХ, рдЙрди рд╕рднреА рдореЗрдореЛрд░реА рдХреЛ рд╢реВрдиреНрдп рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ рдЬрд┐рдирдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб POST рдЕрдиреБрд░реЛрдз рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдореМрдЬреВрдж рдерд╛ред)
рджрд┐рдП рдЧрдП рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗ, SQLeet PBKDF2-HMAC-SHA256 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХреБрдВрдЬреА рднреА рдХреЗрд╡рд▓ рд░реИрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИред
рдмреЗрд╢рдХ, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдирд┐рд░реНрдгрдп рдЕрдкреВрд░реНрдг рд╣реИред рдЕрдЧрд░ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рдкрд╛рд╕ рдкреНрд░рд╢рд╛рд╕рдХ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ, рддреЛ AsmBB рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рд░реИрдо рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рд╕рд┐рд╕реНрдЯрдо рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рдЕрднреА рднреА рдмрд╣реБрдд рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдмреИрдХрдЕрдк рдХреЛ рд╣рд░ рдЬрдЧрд╣ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рд░рд┐рд╕рд╛рд╡ рдХреЗ рдбрд░ рдХреЗ рдмрд┐рдирд╛ рдЦреБрд▓реЗ рдЪреИрдирд▓реЛрдВ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡реИрд╕реЗ, рдПрдХ рд░реЗрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк SQLeet (рдпрд╛ рдЕрдиреНрдп SQLite рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдореИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЙрди рдкрд░ рдХрджрдо рд░рдЦрд╛ред
рд╕рдорд╕реНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреГрд╖реНрда рдХреЗ рдЖрдХрд╛рд░ рдХреА рд╣реИред 3.12.0 (рдорд╛рд░реНрдЪ 2016) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ SQLite рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреГрд╖реНрда рдХрд╛ рдЖрдХрд╛рд░ 1024 рдмрд╛рдЗрдЯреНрд╕ рдерд╛ред V3.12.0 рдореЗрдВ, 4096 рдмрд╛рдЗрдЯреНрд╕ рдиреЗ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ред рдпрд╣ рдЖрдХрд╛рд░, рдбреЗрдЯрд╛рдмреЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреГрд╖реНрда рдЖрдХрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣реА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкреГрд╖реНрда рдХрд╛ рдЖрдХрд╛рд░ рдкрдврд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЖрдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдЕрд▓рдЧ рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ рдЧреИрд░-рдорд╛рдирдХ рдкреГрд╖реНрда рдЖрдХрд╛рд░ (SQLeet рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ 4096 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде) рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рд╣реА рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░рдиреЗ рдкрд░ рднреА рдЗрд╕реЗ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред
рдпрд╣ рдХреЗрд╡рд▓ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - sqlite3_key()
рдпрд╛ pragma key='%%'
рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ pragma page_size=%%
рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╣реА рдкреГрд╖реНрда рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдПрдХ рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рдмрд╛рдж, OS рдЕрдм рдпрд╣ рдирд╣реАрдВ рдкрд╣рдЪрд╛рди рдкрд╛рдПрдЧрд╛ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдПрдХ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИред рдпрд╣ (рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдкрдврд╝рддрд╛ рд╣реВрдВ) рдХрднреА-рдХрднреА рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдИрдУрдПрд╕ рдореЗрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдмрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрд╣рд▓реЗ 32 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЧрдпрд╛ред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред SQLeet рдмрд╣реБрдд рддреЗрдЬ рд╣реИред рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд╡реАрдкреАрдПрд╕ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХреЛрдИ рдордВрджреА рдирд╣реАрдВ рджреЗрдЦреАред рд╕рдЯреАрдХ рдорд╛рдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдордВрджреА рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡рддрдГ рдПрдХ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЧрддрд┐ рдХреЗ 10% рд╕реЗ рдХрдо рд╣реЛрдЧрд╛ред
рдмреЗрд╢рдХ, рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдореБрдлреНрдд SQLite рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SQLcipher ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рддрд░рдг рд▓рд╛рдЗрд╕реЗрдВрд╕ (рдмреАрдПрд╕рдбреА) рд╣реИ, рдХреЛрдб рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВред
рд▓реЗрдХрд┐рди, рджреВрд╕рд░реА рдУрд░, SQLcipher рдЕрдзрд┐рдХ рдкреБрд░рд╛рдирд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП (рд╕рдВрднрд╡рддрдГ) рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рд╣реИред рдХреЛрдИ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИред