AMcoder - javascript, python, java, html, php, sql

Կոդավորված ֆայլ կամ db python-ում

Ես ունեմ sqlite3 db, որը տեղադրում եմ/ընտրում եմ python-ում: Հավելվածը հիանալի է աշխատում, բայց ես ուզում եմ այն ​​կսմթել, որպեսզի ոչ ոք չկարողանա կարդալ DB-ից առանց գաղտնաբառի: Ինչպե՞ս կարող եմ դա անել python-ում: Նշում, ես գաղափար չունեմ, թե որտեղից սկսել:

12.06.2009

Պատասխանները:


1

Դուք կարող եք օգտագործել SQLCipher:

http://sqlcipher.net/

Բաց կոդով ամբողջական տվյալների բազայի գաղտնագրում SQLite-ի համար

SQLCipher-ը SQLite ընդլայնում է, որն ապահովում է տվյալների բազայի ֆայլերի թափանցիկ 256-բիթանոց AES կոդավորումը: Էջերը կոդավորված են սկավառակի վրա գրվելուց առաջ և գաղտնազերծվում են հետ կարդալիս: Փոքր տարածության և հիանալի կատարողականության շնորհիվ այն իդեալական է ներկառուցված հավելվածների տվյալների բազաները պաշտպանելու համար և հարմար է բջջային զարգացման համար:

  1. Բոցավառ արագ կատարողականություն՝ 5-15% գերավճարով բազմաթիվ գործողությունների գաղտնագրման համար
  2. Տվյալների բազայի ֆայլի տվյալների 100%-ը գաղտնագրված է: Օգտագործում է անվտանգության լավ պրակտիկա (CBC ռեժիմ, բանալիների ստացում)
  3. Զրոյական կոնֆիգուրացիայի և կիրառական մակարդակի ծածկագրման լայն հարթակ
  4. Աջակցություն. աշխատում է C/C++, Obj-C, QT, Win32/.NET, Java, Python, Ruby և այլն Windows, Linux, iPhone/iOS…
04.01.2012
  • Այն բաց կոդով է, ուրեմն անվճար է, չէ՞: Այնուամենայնիվ, դուք կարող եք «գնել»: Ի՞նչ եք «գնում»: (նաև, նույն հարցը, ինչ Մայքլը, ինչպե՞ս կարելի է այն աշխատել Python-ից): 21.02.2019

  • 2

    Ես նույն խնդիրն ունեի։ Իմ հավելվածը կարող է միաժամանակ մի քանի օրինակներ ունենալ: Դրա պատճառով ես չեմ կարող պարզապես գաղտնագրել sqlite db ֆայլը և ավարտել դրա հետ: Ես նաև չեմ հավատում, որ python-ում տվյալների կոդավորումը լավ գաղափար է, քանի որ այս վիճակում չեք կարող տվյալների բազայում որևէ լուրջ մանիպուլյացիա անել:

    Հաշվի առնելով այդ սահմանափակումները՝ ես հանդես եմ եկել հետևյալ երկու լուծումներով.

    1. Օգտագործեք վերը նշված SQLCipher-ը: Խնդիրները, որոնք ես տեսնում եմ այստեղ, այն է, որ ես պետք է գրեմ իմ սեփական կապերը Python-ի համար և ինքս կազմեմ այն ​​(կամ վճարեմ վճարը): Ես կարող եմ դա անել երկու դեպքում էլ, քանի որ դա հիանալի լուծում կլինի Python-ի այլ մշակողների համար: Եթե ​​հաջողվի, կհրապարակեմ ետ լուծումով։

    2. Եթե ​​1-ին տարբերակն ինձ համար չափազանց դժվար է կամ շատ ժամանակատար, ես կօգտագործեմ այս մեթոդը: Այս մեթոդը այնքան էլ ապահով չէ: Ես կօգտագործեմ pycrypto տվյալների բազայի ֆայլը կոդավորելու համար: Ես կիրականացնեմ SQL սերվեր, որը կվերծանի տվյալների բազայի ֆայլը, այնուհետև կկարգավորի տարբեր հաճախորդների հարցումները: Ամեն անգամ, երբ չկան չմարված հարցումներ, այն նորից կոդավորի տվյալների բազան: Սա ավելի դանդաղ կլինի, ընդհանուր առմամբ, և տվյալների բազան կթողնի ժամանակավոր ապակոդավորված վիճակներում:

    Հուսով եմ, որ այս գաղափարները կօգնեն հաջորդ տղային:

    Խմբագրել 1/13/2013

    Ես հրաժարվեցի SQLCipher-ից, քանի որ կարծես թե չկարողացա ստիպել այն կոմպիլյացիայի ենթարկել, և կոդերի բազան փորձում է օգտագործել OpenSSL-ը, որը թեև ձայնային գրադարան է, բայց բավականին զանգվածային է պարզ AES 128-ի համար նախատեսված կոդի բազայի համար:

    Ես գտա մեկ այլ տարբերակ wxSQLite3 և պարզեցի, թե ինչպես կարելի է առանձնացնել միայն SQLite գաղտնագրման հատվածը՝ https://github.com/shenghe/FreeSQLiteEncryption: Ես կարողացա հավաքել և աշխատել (SQLite3-ի վերջին տարբերակով): wxSQLite3-ը նաև աջակցում է AES 256-ին, որն իսկապես հիանալի է: Իմ հաջորդ քայլը լինելու է փորձը կազմելու pysqlite (որը sqlite գրադարանը, որը ներկառուցված է python-ում) փոփոխված sqlite3.dll-ով: Եթե ​​դա աշխատի, ես կսմթեմ pysqlite-ը` աջակցելու wxSQLite3-ի sqlite3.dll-ի ընդլայնված, գաղտնագրման հատվածին: Ամեն դեպքում, ես կփորձեմ թարմացնել այս թեման իմ արդյունքներով, իսկ հաջողության դեպքում կտեղադրեմ վերջնական կոդի բազան՝ կառուցման հրահանգներով, Github-ում։

    12.01.2013
  • Ցավոք, նախագիծը ձախողվեց, և ես երբեք չվերադարձա դրան: 05.04.2014

  • 3

    Ինչպես առաջարկում է Frontware-ը, կարող եք օգտագործել sqlcipher:

    pysqlcipher python փաթեթը կարող է հեշտացնել այն օգտագործելը, քանի որ այն օգտագործում է sqlcipher կոդերի միավորումը ընդլայնումը կազմելու համար:

    Դա պետք է լինի պարզապես pysqlcipher-ի օգտագործման խնդիր, ինչպես կօգտագործեիք սովորական sqlite.dbapi2-ը, պարզապես սահմանելով ճիշտ կրիպտոպրագմաներ:

    18.04.2014

    4

    SQLite տվյալների բազաները բավականին ընթեռնելի են մարդու կողմից, և ներկառուցված գաղտնագրում չկա:

    Մտահոգվա՞ծ եք, որ ինչ-որ մեկը մուտք գործի և կարդում է տվյալների բազայի ֆայլերը ուղղակիորեն կամ մուտք գործելու դրանք ձեր ծրագրի միջոցով:

    Ես ենթադրում եմ առաջինը, քանի որ վերջինս իրականում կապված չէ տվյալների բազայի հետ. դա ձեր դիմումի անվտանգությունն է, որի մասին դուք հարցնում եք:

    Մի քանի տարբերակ գալիս է մտքում.

    1. Պաշտպանեք db-ն ոչ թե գաղտնագրման, այլ ֆայլային համակարգի թույլտվություններով: Դուք չեք նշել, թե որն է ձեր միջավայրը, այնպես որ ես չեմ կարող ասել՝ սա ձեզ համար կիրառելի է, թե ոչ, բայց դա, հավանաբար, ամենապարզ և ամենահուսալի միջոցն է, քանի որ չեք կարող փորձել վերծանել այն, ինչ չեք կարող կարդալ:
    2. Գաղտնագրեք Python-ում նախքան գրելը, և ապակոդավորեք Python-ում՝ կարդալուց հետո: Բավականին պարզ է, բայց դուք կորցնում եք SQL-ի հավաքածուների վրա հիմնված համապատասխանող գործողությունների հզորության մեծ մասը:
    3. Անցում այլ տվյալների բազայի; Օգտագործողի նույնականացումը և թույլտվությունները բազմաբնակարան օգտատերերի տվյալների բազաների ստանդարտ հատկանիշներն են: Երբ դուք դեմ եք որևէ գործիքի սահմանափակումներին, ավելի հեշտ կլինի նայել այլ գործիքներին, այլ ոչ թե նոր հնարավորություններ կոտրել ընթացիկ գործիքի մեջ:
    12.06.2009
  • Ես ունեմ նույն հարցը, բացառությամբ, որ ես չեմ կարող օգտագործել այլ տվյալների բազաներ, քանի որ sqlite-ը թեթև է աշխատասեղանի հավելվածի համար, որը ես մտադիր եմ գրել (մասնավոր ամսագրի ծրագրակազմ) 08.02.2010

  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..