Kết quả 1 đến 10 của 10
  1. #1
    Ngày tham gia
    Mar 2015
    Bài viết
    0

    Mã hóa dữ liệu trong database sqlite và giải mã với ứng dụng android

    chào các bạn, đây là một thủ thuật khá hay mà long đã tìm hiểu đc trong thời gian qua. để làm được ứng dụng này long đã phải xử lý rất nhiều bug lỗi khó và sau đây là kết quả đạt được nên chia sẽ cho các bạn ^^! đây là thủ thuật nâng cao từ bài hướng dẫn mã hóa và giải mã cơ bản tại đây.


    [img]data/attachments/13/13873-4fb9a3277f378924f1ac76d8f8376952.jpg[/img]

    1) source code demo:
    click vào đây để download source code demo.
    2) mô tả thủ thuật:
    - dữ liệu là một thông tin tuyệt mật không thể để cho người dùng biết.
    - mã hóa dữ liệu này với một khóa mà chỉ mình biết.
    - lưu trữ dữ liệu đã được mã hóa này vào database.
    - khi muốn sử dụng dữ liệu, lấy dữ liệu đã mã hóa ra từ database
    - thực hiện giải mã với khóa lúc mã hóa
    - và làm gì đó với dữ liệu

    3) lợi ích của thủ thuật này:
    - khi ứng dụng bản bạn bị bẻ khóa, nhất là trên android, các hacker sẽ dễ dàng có được database của bạn. tuy nhiên đọc được dữ liệu đã mã hóa là một vấn đề. nó sẽ làm cho bác hacker nãn và bỏ cuộc .
    - dữ liệu được mã hóa lưu vào data dưới dạng mảng byte nhị phân nên dữ liệu rất an toàn
    - việc giải mã là hoàn toàn ok nếu như bạn nhập đúng khóa lúc mã hóa, còn nếu sai thì cũng chả ra cái gì cả ^^!

    4) hỉnh ảnh demo của thủ thuật này:


    [img]data/attachments/13/13871-2d3e53309d96ea79a9b5f08a54bfcf8a.jpg[/img]



    [img]data/attachments/13/13872-4cc5c033909f511755d94826987b0bba.jpg[/img]

    5) hướng dẫn code:

    - res/values/strings.xml


    Mã nguồn PHP:
    [color=#000000]
    [/color][color=#007700]<?[/color][color=#0000bb]xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0" [/color][color=#0000bb]encoding[/color][color=#007700]=[/color][color=#dd0000]"utf-8"[/color][color=#0000bb]?>[/color]<resources> <string name="app_name">demoandroid</string> <string name="parsed_data">http://android.vn
    hướng dẫn bởi thanhlong90.it</string> <string name="action_settings">settings</string> <string name="hello_world">hello world!</string> <string name="dulieu">dữ liệu cần mã hóa:</string> <string name="hint">mời nhập dữ liệu</string> <string name="khoa">mời nhập khóa: (khóa này dùng để giải mã)</string> <string name="hint2">vui lòng nhập khóa mã hóa</string> <string name="xemketqua">xem kết quả mã hóa dữ liệu</string> <string name="xemtranggiaima">qua trang giải mã</string> <string name="title_activity_activity2">activity2</string> <string name="dulieumahoa">dữ liệu cần giải mã là:</string> <string name="dulieukhoa">khóa để giải mã là:</string> <string name="xemketquagiaima">xem kết quả giải mã dữ liệu</string> <string name="xemtrangmahoa">qua trang mã hóa</string> </resources>
    - androidmanifest.xml


    Mã nguồn PHP:
    [color=#000000]
    [/color][color=#007700]<?[/color][color=#0000bb]xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0" [/color][color=#0000bb]encoding[/color][color=#007700]=[/color][color=#dd0000]"utf-8"[/color][color=#0000bb]?>[/color]<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android.vn" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="8" /> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="android.vn.mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name="android.vn.activity2" android:label="@string/title_activity_activity2" > </activity> </application> </manifest>
    - activity_main.xml


    Mã nguồn PHP:
    [color=#000000]
    [/color][color=#007700]<[/color][color=#0000bb]linearlayout xmlns[/color][color=#007700]:[/color][color=#0000bb]android[/color][color=#007700]=[/color][color=#dd0000]"http://schemas.android.com/apk/res/android" [/color][color=#0000bb]xmlns[/color][color=#007700]:[/color][color=#0000bb]tools[/color][color=#007700]=[/color][color=#dd0000]"http://schemas.android.com/tools" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"match_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"match_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]orientation[/color][color=#007700]=[/color][color=#dd0000]"vertical" [/color][color=#007700]> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"match_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"14dp" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]gravity[/color][color=#007700]=[/color][color=#dd0000]"center" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]text[/color][color=#007700]=[/color][color=#dd0000]"@string/parsed_data" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]textappearance[/color][color=#007700]=[/color][color=#dd0000]"?android:attr/textappearancemedium" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]textstyle[/color][color=#007700]=[/color][color=#dd0000]"bold" [/color][color=#007700]/> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/textview1" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"20dp" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]text[/color][color=#007700]=[/color][color=#dd0000]"@string/dulieu" [/color][color=#007700]/> <[/color][color=#0000bb]edittext android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/edittext1" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"match_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]hint[/color][color=#007700]=[/color][color=#dd0000]"@string/hint" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]ems[/color][color=#007700]=[/color][color=#dd0000]"10" [/color][color=#007700]> </[/color][color=#0000bb]edittext[/color][color=#007700]> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/textview2" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"20dp" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]text[/color][color=#007700]=[/color][color=#dd0000]"@string/khoa" [/color][color=#007700]/> <[/color][color=#0000bb]edittext android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/edittext2" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"match_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]hint[/color][color=#007700]=[/color][color=#dd0000]"@string/hint2" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]ems[/color][color=#007700]=[/color][color=#dd0000]"10" [/color][color=#007700]> </[/color][color=#0000bb]edittext[/color][color=#007700]> <[/color][color=#0000bb]button android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/button1" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"fill_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]text[/color][color=#007700]=[/color][color=#dd0000]"@string/xemketqua" [/color][color=#007700]/> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/textview3" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"20dp" [/color][color=#007700]/> <[/color][color=#0000bb]button android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/button2" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"fill_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]visibility[/color][color=#007700]=[/color][color=#dd0000]"invisible" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]text[/color][color=#007700]=[/color][color=#dd0000]"@string/xemtranggiaima" [/color][color=#007700]/> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/textview4" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"20dp" [/color][color=#007700]/> </[/color][color=#0000bb]linearlayout[/color][color=#007700]>[/color] 
    - activity_2.xml


    Mã nguồn PHP:
    [color=#000000]
    [/color][color=#007700]<[/color][color=#0000bb]linearlayout xmlns[/color][color=#007700]:[/color][color=#0000bb]android[/color][color=#007700]=[/color][color=#dd0000]"http://schemas.android.com/apk/res/android" [/color][color=#0000bb]xmlns[/color][color=#007700]:[/color][color=#0000bb]tools[/color][color=#007700]=[/color][color=#dd0000]"http://schemas.android.com/tools" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"match_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"match_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]orientation[/color][color=#007700]=[/color][color=#dd0000]"vertical" [/color][color=#007700]> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"match_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"14dp" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]gravity[/color][color=#007700]=[/color][color=#dd0000]"center" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]text[/color][color=#007700]=[/color][color=#dd0000]"@string/parsed_data" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]textappearance[/color][color=#007700]=[/color][color=#dd0000]"?android:attr/textappearancemedium" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]textstyle[/color][color=#007700]=[/color][color=#dd0000]"bold" [/color][color=#007700]/> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/textview1" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"20dp" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]text[/color][color=#007700]=[/color][color=#dd0000]"@string/dulieumahoa" [/color][color=#007700]/> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/textview2" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"20dp"[/color][color=#007700]/> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/textview3" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"20dp" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]text[/color][color=#007700]=[/color][color=#dd0000]"@string/dulieukhoa" [/color][color=#007700]/> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/textview4" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"20dp"[/color][color=#007700]/> <[/color][color=#0000bb]button android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/button1" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"fill_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]text[/color][color=#007700]=[/color][color=#dd0000]"@string/xemketquagiaima" [/color][color=#007700]/> <[/color][color=#0000bb]textview android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/textview5" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"20dp"[/color][color=#007700]/> <[/color][color=#0000bb]button android[/color][color=#007700]:[/color][color=#0000bb]id[/color][color=#007700]=[/color][color=#dd0000]"@+id/button2" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_width[/color][color=#007700]=[/color][color=#dd0000]"fill_parent" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_height[/color][color=#007700]=[/color][color=#dd0000]"wrap_content" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]layout_margintop[/color][color=#007700]=[/color][color=#dd0000]"20dp" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]visibility[/color][color=#007700]=[/color][color=#dd0000]"invisible" [/color][color=#0000bb]android[/color][color=#007700]:[/color][color=#0000bb]text[/color][color=#007700]=[/color][color=#dd0000]"@string/xemtrangmahoa" [/color][color=#007700]/> </[/color][color=#0000bb]linearlayout[/color][color=#007700]>[/color] 
    - mydatabase.java


    Mã nguồn PHP:
    [color=#000000]
    package android[/color][color=#007700].[/color][color=#0000bb]vn[/color][color=#007700]; [/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]content[/color][color=#007700].[/color][color=#0000bb]contentvalues[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]content[/color][color=#007700].[/color][color=#0000bb]context[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]cursor[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]sqlexception[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]sqlite[/color][color=#007700].[/color][color=#0000bb]sqlitedatabase[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]sqlite[/color][color=#007700].[/color][color=#0000bb]sqliteopenhelper[/color][color=#007700]; public class [/color][color=#0000bb]mydatabase [/color][color=#007700]{ private static final [/color][color=#0000bb]string database_name [/color][color=#007700]= [/color][color=#dd0000]"db_user"[/color][color=#007700]; private static final [/color][color=#0000bb]int database_version [/color][color=#007700]= [/color][color=#0000bb]1[/color][color=#007700]; private static final [/color][color=#0000bb]string table_account [/color][color=#007700]= [/color][color=#dd0000]"account"[/color][color=#007700]; public static final [/color][color=#0000bb]string column_id [/color][color=#007700]= [/color][color=#dd0000]"_id"[/color][color=#007700]; public static final [/color][color=#0000bb]string column_acc [/color][color=#007700]= [/color][color=#dd0000]"tentaikhoan"[/color][color=#007700]; public static final [/color][color=#0000bb]string column_data [/color][color=#007700]= [/color][color=#dd0000]"data"[/color][color=#007700]; private static [/color][color=#0000bb]context context[/color][color=#007700]; static [/color][color=#0000bb]sqlitedatabase db[/color][color=#007700]; private [/color][color=#0000bb]openhelper openhelper[/color][color=#007700]; public [/color][color=#0000bb]mydatabase[/color][color=#007700]([/color][color=#0000bb]context c[/color][color=#007700]){ [/color][color=#0000bb]mydatabase[/color][color=#007700].[/color][color=#0000bb]context [/color][color=#007700]= [/color][color=#0000bb]c[/color][color=#007700]; } [/color][color=#ff8000]//cho phép kết nối database [/color][color=#007700]public [/color][color=#0000bb]mydatabase open[/color][color=#007700]() [/color][color=#0000bb]throws sqlexception[/color][color=#007700]{ [/color][color=#0000bb]openhelper [/color][color=#007700]= new [/color][color=#0000bb]openhelper[/color][color=#007700]([/color][color=#0000bb]context[/color][color=#007700]); [/color][color=#0000bb]db [/color][color=#007700]= [/color][color=#0000bb]openhelper[/color][color=#007700].[/color][color=#0000bb]getwritabledatabase[/color][color=#007700](); return [/color][color=#0000bb]this[/color][color=#007700]; } [/color][color=#ff8000]//đóng kết nối với database [/color][color=#007700]public [/color][color=#0000bb]void close[/color][color=#007700](){ [/color][color=#0000bb]openhelper[/color][color=#007700].[/color][color=#0000bb]close[/color][color=#007700](); } [/color][color=#ff8000]//khởi tạo dữ liệu trong database [/color][color=#007700]public [/color][color=#0000bb]long createdata[/color][color=#007700]([/color][color=#0000bb]string tendn[/color][color=#007700], [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]data[/color][color=#007700]) { [/color][color=#0000bb]contentvalues cv [/color][color=#007700]= new [/color][color=#0000bb]contentvalues[/color][color=#007700](); [/color][color=#0000bb]cv[/color][color=#007700].[/color][color=#0000bb]put[/color][color=#007700]([/color][color=#0000bb]column_acc[/color][color=#007700], [/color][color=#0000bb]tendn[/color][color=#007700]); [/color][color=#0000bb]cv[/color][color=#007700].[/color][color=#0000bb]put[/color][color=#007700]([/color][color=#0000bb]column_data[/color][color=#007700], [/color][color=#0000bb]data[/color][color=#007700]); return [/color][color=#0000bb]db[/color][color=#007700].[/color][color=#0000bb]insert[/color][color=#007700]([/color][color=#0000bb]table_account[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700], [/color][color=#0000bb]cv[/color][color=#007700]); } public [/color][color=#0000bb]int deleteacc[/color][color=#007700]([/color][color=#0000bb]string acc[/color][color=#007700]) { return [/color][color=#0000bb]db[/color][color=#007700].[/color][color=#0000bb]delete[/color][color=#007700]([/color][color=#0000bb]table_account[/color][color=#007700], [/color][color=#0000bb]column_acc [/color][color=#007700]+ [/color][color=#dd0000]"='" [/color][color=#007700]+ [/color][color=#0000bb]acc [/color][color=#007700]+ [/color][color=#dd0000]"'"[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700]); } public [/color][color=#0000bb]int deleteaccountall[/color][color=#007700]() { return [/color][color=#0000bb]db[/color][color=#007700].[/color][color=#0000bb]delete[/color][color=#007700]([/color][color=#0000bb]table_account[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700]); } public [/color][color=#0000bb]boolean updatedata[/color][color=#007700]([/color][color=#0000bb]string acc[/color][color=#007700], [/color][color=#0000bb]string data[/color][color=#007700]){ [/color][color=#0000bb]contentvalues cv [/color][color=#007700]= new [/color][color=#0000bb]contentvalues[/color][color=#007700](); [/color][color=#0000bb]cv[/color][color=#007700].[/color][color=#0000bb]put[/color][color=#007700]([/color][color=#0000bb]column_data[/color][color=#007700],[/color][color=#0000bb]data[/color][color=#007700]); [/color][color=#0000bb]long kq [/color][color=#007700]= [/color][color=#0000bb]db[/color][color=#007700].[/color][color=#0000bb]update[/color][color=#007700]([/color][color=#0000bb]table_account[/color][color=#007700],[/color][color=#0000bb]cv[/color][color=#007700],[/color][color=#0000bb]column_acc[/color][color=#007700]+[/color][color=#dd0000]"='"[/color][color=#007700]+[/color][color=#0000bb]acc[/color][color=#007700]+[/color][color=#dd0000]"'"[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700]); if ([/color][color=#0000bb]kq[/color][color=#007700]==[/color][color=#0000bb]0[/color][color=#007700]) return [/color][color=#0000bb]false[/color][color=#007700]; else return [/color][color=#0000bb]true[/color][color=#007700]; } [/color][color=#ff8000]//lấy dữ liệu mã hóa [/color][color=#007700]public [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]getdata[/color][color=#007700]([/color][color=#0000bb]string acc[/color][color=#007700]) { [/color][color=#0000bb]cursor c [/color][color=#007700]= [/color][color=#0000bb]db[/color][color=#007700].[/color][color=#0000bb]rawquery[/color][color=#007700]([/color][color=#dd0000]"select * from "[/color][color=#007700]+[/color][color=#0000bb]table_account[/color][color=#007700]+[/color][color=#dd0000]" where "[/color][color=#007700]+[/color][color=#0000bb]column_acc[/color][color=#007700]+[/color][color=#dd0000]" = ?"[/color][color=#007700], new [/color][color=#0000bb]string[/color][color=#007700][] { [/color][color=#0000bb]acc [/color][color=#007700]}); [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]data [/color][color=#007700]= [/color][color=#0000bb]null[/color][color=#007700]; if([/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]getcount[/color][color=#007700]()==[/color][color=#0000bb]1[/color][color=#007700]){ [/color][color=#0000bb]int i [/color][color=#007700]= [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]getcolumnindex[/color][color=#007700]([/color][color=#0000bb]column_data[/color][color=#007700]); [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]movetofirst[/color][color=#007700](); [/color][color=#0000bb]data[/color][color=#007700]=[/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]getblob[/color][color=#007700]([/color][color=#0000bb]i[/color][color=#007700]); } [/color][color=#0000bb]c[/color][color=#007700].[/color][color=#0000bb]close[/color][color=#007700](); return [/color][color=#0000bb]data[/color][color=#007700]; } [/color][color=#ff8000]//---------------- class openhelper ------------------ [/color][color=#007700]private static class [/color][color=#0000bb]openhelper [/color][color=#007700]extends [/color][color=#0000bb]sqliteopenhelper [/color][color=#007700]{ public [/color][color=#0000bb]openhelper[/color][color=#007700]([/color][color=#0000bb]context context[/color][color=#007700]) { [/color][color=#0000bb]super[/color][color=#007700]([/color][color=#0000bb]context[/color][color=#007700], [/color][color=#0000bb]database_name[/color][color=#007700], [/color][color=#0000bb]null[/color][color=#007700], [/color][color=#0000bb]database_version[/color][color=#007700]); } [/color][color=#ff8000]//tạo database [/color][color=#007700]@[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void oncreate[/color][color=#007700]([/color][color=#0000bb]sqlitedatabase arg0[/color][color=#007700]) { [/color][color=#0000bb]arg0[/color][color=#007700].[/color][color=#0000bb]execsql[/color][color=#007700]([/color][color=#dd0000]"create table " [/color][color=#007700]+ [/color][color=#0000bb]table_account [/color][color=#007700]+ [/color][color=#dd0000]" (" [/color][color=#007700]+ [/color][color=#0000bb]column_id [/color][color=#007700]+ [/color][color=#dd0000]" integer primary key autoincrement, " [/color][color=#007700]+ [/color][color=#0000bb]column_acc [/color][color=#007700]+ [/color][color=#dd0000]" text not null, " [/color][color=#007700]+ [/color][color=#0000bb]column_data [/color][color=#007700]+ [/color][color=#dd0000]" blob not null);"[/color][color=#007700]); } [/color][color=#ff8000]//cập nhật database [/color][color=#007700]@[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onupgrade[/color][color=#007700]([/color][color=#0000bb]sqlitedatabase arg0[/color][color=#007700], [/color][color=#0000bb]int arg1[/color][color=#007700], [/color][color=#0000bb]int arg2[/color][color=#007700]) { [/color][color=#0000bb]arg0[/color][color=#007700].[/color][color=#0000bb]execsql[/color][color=#007700]([/color][color=#dd0000]"drop table if exists " [/color][color=#007700]+ [/color][color=#0000bb]table_account[/color][color=#007700]); [/color][color=#0000bb]oncreate[/color][color=#007700]([/color][color=#0000bb]arg0[/color][color=#007700]); } }}[/color] 
    - mycipher.java


    Mã nguồn PHP:
    [color=#000000]
    package android[/color][color=#007700].[/color][color=#0000bb]vn[/color][color=#007700]; [/color][color=#0000bb]import java[/color][color=#007700].[/color][color=#0000bb]security[/color][color=#007700].[/color][color=#0000bb]securerandom[/color][color=#007700]; [/color][color=#0000bb]import javax[/color][color=#007700].[/color][color=#0000bb]crypto[/color][color=#007700].[/color][color=#0000bb]cipher[/color][color=#007700];[/color][color=#0000bb]import javax[/color][color=#007700].[/color][color=#0000bb]crypto[/color][color=#007700].[/color][color=#0000bb]keygenerator[/color][color=#007700];[/color][color=#0000bb]import javax[/color][color=#007700].[/color][color=#0000bb]crypto[/color][color=#007700].[/color][color=#0000bb]secretkey[/color][color=#007700];[/color][color=#0000bb]import javax[/color][color=#007700].[/color][color=#0000bb]crypto[/color][color=#007700].[/color][color=#0000bb]spec[/color][color=#007700].[/color][color=#0000bb]secretkeyspec[/color][color=#007700];public class [/color][color=#0000bb]mycipher [/color][color=#007700]{ [/color][color=#ff8000]//hàm chuyển đổi key là 1 chuỗi ký tự về 1 mảng byte làm làm chìa khóa mã hóa [/color][color=#007700]public static [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]generatekey[/color][color=#007700]([/color][color=#0000bb]string password[/color][color=#007700]) [/color][color=#0000bb]throws exception [/color][color=#007700]{ [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]keystart [/color][color=#007700]= [/color][color=#0000bb]password[/color][color=#007700].[/color][color=#0000bb]getbytes[/color][color=#007700](); [/color][color=#0000bb]keygenerator kgen [/color][color=#007700]= [/color][color=#0000bb]keygenerator[/color][color=#007700].[/color][color=#0000bb]getinstance[/color][color=#007700]([/color][color=#dd0000]"aes"[/color][color=#007700]); [/color][color=#0000bb]securerandom sr [/color][color=#007700]= [/color][color=#0000bb]securerandom[/color][color=#007700].[/color][color=#0000bb]getinstance[/color][color=#007700]([/color][color=#dd0000]"sha1prng"[/color][color=#007700]); [/color][color=#0000bb]sr[/color][color=#007700].[/color][color=#0000bb]setseed[/color][color=#007700]([/color][color=#0000bb]keystart[/color][color=#007700]); [/color][color=#0000bb]kgen[/color][color=#007700].[/color][color=#0000bb]init[/color][color=#007700]([/color][color=#0000bb]128[/color][color=#007700], [/color][color=#0000bb]sr[/color][color=#007700]); [/color][color=#0000bb]secretkey skey [/color][color=#007700]= [/color][color=#0000bb]kgen[/color][color=#007700].[/color][color=#0000bb]generatekey[/color][color=#007700](); return [/color][color=#0000bb]skey[/color][color=#007700].[/color][color=#0000bb]getencoded[/color][color=#007700](); } [/color][color=#ff8000]//hàm thực hiện việc mã hóa dữ liệu từ 1 key [/color][color=#007700]public static [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]encodefile[/color][color=#007700]([/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]key[/color][color=#007700], [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]filedata[/color][color=#007700]) [/color][color=#0000bb]throws exception [/color][color=#007700]{ [/color][color=#0000bb]secretkeyspec skeyspec [/color][color=#007700]= new [/color][color=#0000bb]secretkeyspec[/color][color=#007700]([/color][color=#0000bb]key[/color][color=#007700], [/color][color=#dd0000]"aes"[/color][color=#007700]); [/color][color=#0000bb]cipher cipher [/color][color=#007700]= [/color][color=#0000bb]cipher[/color][color=#007700].[/color][color=#0000bb]getinstance[/color][color=#007700]([/color][color=#dd0000]"aes"[/color][color=#007700]); [/color][color=#0000bb]cipher[/color][color=#007700].[/color][color=#0000bb]init[/color][color=#007700]([/color][color=#0000bb]cipher[/color][color=#007700].[/color][color=#0000bb]encrypt_mode[/color][color=#007700], [/color][color=#0000bb]skeyspec[/color][color=#007700]); [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]encrypted [/color][color=#007700]= [/color][color=#0000bb]cipher[/color][color=#007700].[/color][color=#0000bb]dofinal[/color][color=#007700]([/color][color=#0000bb]filedata[/color][color=#007700]); return [/color][color=#0000bb]encrypted[/color][color=#007700]; } [/color][color=#ff8000]//hàm thực hiện việc giải mã dữ liệu từ 1 key [/color][color=#007700]public static [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]decodefile[/color][color=#007700]([/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]key[/color][color=#007700], [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]filedata[/color][color=#007700]) [/color][color=#0000bb]throws exception [/color][color=#007700]{ [/color][color=#0000bb]secretkeyspec skeyspec [/color][color=#007700]= new [/color][color=#0000bb]secretkeyspec[/color][color=#007700]([/color][color=#0000bb]key[/color][color=#007700], [/color][color=#dd0000]"aes"[/color][color=#007700]); [/color][color=#0000bb]cipher cipher [/color][color=#007700]= [/color][color=#0000bb]cipher[/color][color=#007700].[/color][color=#0000bb]getinstance[/color][color=#007700]([/color][color=#dd0000]"aes"[/color][color=#007700]); [/color][color=#0000bb]cipher[/color][color=#007700].[/color][color=#0000bb]init[/color][color=#007700]([/color][color=#0000bb]cipher[/color][color=#007700].[/color][color=#0000bb]decrypt_mode[/color][color=#007700], [/color][color=#0000bb]skeyspec[/color][color=#007700]); [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]decrypted [/color][color=#007700]= [/color][color=#0000bb]cipher[/color][color=#007700].[/color][color=#0000bb]dofinal[/color][color=#007700]([/color][color=#0000bb]filedata[/color][color=#007700]); return [/color][color=#0000bb]decrypted[/color][color=#007700]; } }[/color] 
    - mainactivity.java


    Mã nguồn PHP:
    [color=#000000]
    package android[/color][color=#007700].[/color][color=#0000bb]vn[/color][color=#007700]; [/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]app[/color][color=#007700].[/color][color=#0000bb]activity[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]content[/color][color=#007700].[/color][color=#0000bb]intent[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]os[/color][color=#007700].[/color][color=#0000bb]bundle[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]util[/color][color=#007700].[/color][color=#0000bb]log[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]onclicklistener[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]button[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]edittext[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]textview[/color][color=#007700]; public class [/color][color=#0000bb]mainactivity [/color][color=#007700]extends [/color][color=#0000bb]activity [/color][color=#007700]{ private [/color][color=#0000bb]edittext data[/color][color=#007700], [/color][color=#0000bb]key[/color][color=#007700]; private [/color][color=#0000bb]textview hienthiketqua[/color][color=#007700]; private [/color][color=#0000bb]button xemketqua[/color][color=#007700], [/color][color=#0000bb]chuyentrang[/color][color=#007700]; private [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]filesbytes[/color][color=#007700]; private [/color][color=#0000bb]mydatabase database [/color][color=#007700]= new [/color][color=#0000bb]mydatabase[/color][color=#007700]([/color][color=#0000bb]this[/color][color=#007700]); private [/color][color=#0000bb]int flat [/color][color=#007700]= [/color][color=#0000bb]1[/color][color=#007700]; @[/color][color=#0000bb]override [/color][color=#007700]protected [/color][color=#0000bb]void oncreate[/color][color=#007700]([/color][color=#0000bb]bundle savedinstancestate[/color][color=#007700]) { [/color][color=#0000bb]super[/color][color=#007700].[/color][color=#0000bb]oncreate[/color][color=#007700]([/color][color=#0000bb]savedinstancestate[/color][color=#007700]); [/color][color=#0000bb]setcontentview[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]layout[/color][color=#007700].[/color][color=#0000bb]activity_main[/color][color=#007700]); [/color][color=#ff8000]//lấy đối tượng xml sử dụng trong code [/color][color=#0000bb]data [/color][color=#007700]= ([/color][color=#0000bb]edittext[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]edittext1[/color][color=#007700]); [/color][color=#0000bb]key [/color][color=#007700]= ([/color][color=#0000bb]edittext[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]edittext2[/color][color=#007700]); [/color][color=#0000bb]xemketqua [/color][color=#007700]= ([/color][color=#0000bb]button[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]button1[/color][color=#007700]); [/color][color=#0000bb]hienthiketqua [/color][color=#007700]= ([/color][color=#0000bb]textview[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]textview3[/color][color=#007700]); [/color][color=#0000bb]chuyentrang [/color][color=#007700]= ([/color][color=#0000bb]button[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]button2[/color][color=#007700]); [/color][color=#0000bb]xemketqua[/color][color=#007700].[/color][color=#0000bb]setonclicklistener[/color][color=#007700](new [/color][color=#0000bb]onclicklistener[/color][color=#007700]() { @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onclick[/color][color=#007700]([/color][color=#0000bb]view v[/color][color=#007700]) { [/color][color=#0000bb]chuyentrang[/color][color=#007700].[/color][color=#0000bb]setvisibility[/color][color=#007700]([/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]visible[/color][color=#007700]); [/color][color=#0000bb]string ketquamahoa [/color][color=#007700]= [/color][color=#0000bb]data[/color][color=#007700].[/color][color=#0000bb]gettext[/color][color=#007700]().[/color][color=#0000bb]tostring[/color][color=#007700](); [/color][color=#0000bb]string khoamahoa [/color][color=#007700]= [/color][color=#0000bb]key[/color][color=#007700].[/color][color=#0000bb]gettext[/color][color=#007700]().[/color][color=#0000bb]tostring[/color][color=#007700](); try { [/color][color=#ff8000]//thực hiện mã hóa dữ liệu [/color][color=#0000bb]filesbytes [/color][color=#007700]= [/color][color=#0000bb]mycipher[/color][color=#007700].[/color][color=#0000bb]encodefile[/color][color=#007700]([/color][color=#0000bb]mycipher[/color][color=#007700].[/color][color=#0000bb]generatekey[/color][color=#007700]([/color][color=#0000bb]khoamahoa[/color][color=#007700]), [/color][color=#0000bb]ketquamahoa[/color][color=#007700].[/color][color=#0000bb]getbytes[/color][color=#007700]([/color][color=#dd0000]"utf-8"[/color][color=#007700])); [/color][color=#ff8000]//mở kết nối dữ liệu [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]open[/color][color=#007700](); [/color][color=#ff8000]//đặt cờ tạm thời cho dữ liệu khởi tạo 1 lần thôi [/color][color=#007700]if([/color][color=#0000bb]flat[/color][color=#007700]==[/color][color=#0000bb]1[/color][color=#007700]){ [/color][color=#ff8000]//lưu dữ liệu mã hóa vào database - filesbytes [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]createdata[/color][color=#007700]([/color][color=#dd0000]"tendulieu"[/color][color=#007700], [/color][color=#0000bb]filesbytes[/color][color=#007700]); [/color][color=#0000bb]flat [/color][color=#007700]= [/color][color=#0000bb]2[/color][color=#007700]; } [/color][color=#ff8000]//đóng kết nối tới database [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]close[/color][color=#007700](); } catch ([/color][color=#0000bb]exception e[/color][color=#007700]) { [/color][color=#0000bb]log[/color][color=#007700].[/color][color=#0000bb]v[/color][color=#007700]([/color][color=#dd0000]""[/color][color=#007700], [/color][color=#dd0000]"lỗi rồi !" [/color][color=#007700]+ [/color][color=#0000bb]e[/color][color=#007700].[/color][color=#0000bb]tostring[/color][color=#007700]()); } [/color][color=#ff8000]//hiển thị đoạn code mã hóa nhị phân dưới dạng 1 chuỗi [/color][color=#0000bb]hienthiketqua[/color][color=#007700].[/color][color=#0000bb]settext[/color][color=#007700](new [/color][color=#0000bb]string[/color][color=#007700]([/color][color=#0000bb]filesbytes[/color][color=#007700])); } }); [/color][color=#0000bb]chuyentrang[/color][color=#007700].[/color][color=#0000bb]setonclicklistener[/color][color=#007700](new [/color][color=#0000bb]onclicklistener[/color][color=#007700]() { @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onclick[/color][color=#007700]([/color][color=#0000bb]view v[/color][color=#007700]) { [/color][color=#ff8000]//tạo 1 gói dữ liệu mybundle [/color][color=#0000bb]bundle mybundle [/color][color=#007700]= new [/color][color=#0000bb]bundle[/color][color=#007700](); [/color][color=#ff8000]//đính kèm dữ liệu muốn gửi đi vào gói này, phân biệt chung qua key(ví dụ: "data" và "key") [/color][color=#0000bb]mybundle[/color][color=#007700].[/color][color=#0000bb]putstring[/color][color=#007700]([/color][color=#dd0000]"data"[/color][color=#007700], [/color][color=#dd0000]"tendulieu"[/color][color=#007700]); [/color][color=#0000bb]mybundle[/color][color=#007700].[/color][color=#0000bb]putstring[/color][color=#007700]([/color][color=#dd0000]"key"[/color][color=#007700], [/color][color=#0000bb]key[/color][color=#007700].[/color][color=#0000bb]gettext[/color][color=#007700]().[/color][color=#0000bb]tostring[/color][color=#007700]()); [/color][color=#0000bb]intent myintent [/color][color=#007700]= new [/color][color=#0000bb]intent[/color][color=#007700]([/color][color=#0000bb]mainactivity[/color][color=#007700].[/color][color=#0000bb]this[/color][color=#007700], [/color][color=#0000bb]activity2[/color][color=#007700].class); [/color][color=#0000bb]myintent[/color][color=#007700].[/color][color=#0000bb]putextras[/color][color=#007700]([/color][color=#0000bb]mybundle[/color][color=#007700]); [/color][color=#ff8000]//chuyển qua trang giải mã [/color][color=#0000bb]startactivity[/color][color=#007700]([/color][color=#0000bb]myintent[/color][color=#007700]); [/color][color=#ff8000]//thoát activity này [/color][color=#0000bb]finish[/color][color=#007700](); } }); } }[/color] 
    - activity2.java


    Mã nguồn PHP:
    [color=#000000]
    package android[/color][color=#007700].[/color][color=#0000bb]vn[/color][color=#007700]; [/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]os[/color][color=#007700].[/color][color=#0000bb]bundle[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]onclicklistener[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]button[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]widget[/color][color=#007700].[/color][color=#0000bb]textview[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]app[/color][color=#007700].[/color][color=#0000bb]activity[/color][color=#007700];[/color][color=#0000bb]import android[/color][color=#007700].[/color][color=#0000bb]content[/color][color=#007700].[/color][color=#0000bb]intent[/color][color=#007700]; public class [/color][color=#0000bb]activity2 [/color][color=#007700]extends [/color][color=#0000bb]activity [/color][color=#007700]{ [/color][color=#ff8000]//private byte[] filesbytes; [/color][color=#007700]private [/color][color=#0000bb]string data[/color][color=#007700], [/color][color=#0000bb]key[/color][color=#007700], [/color][color=#0000bb]ketquagiaima[/color][color=#007700]; private [/color][color=#0000bb]textview dulieumahoa[/color][color=#007700], [/color][color=#0000bb]khoagiaima[/color][color=#007700], [/color][color=#0000bb]hienthiketquagiaima[/color][color=#007700]; private [/color][color=#0000bb]button giaima[/color][color=#007700], [/color][color=#0000bb]chuyentrang[/color][color=#007700]; private [/color][color=#0000bb]mydatabase database [/color][color=#007700]= new [/color][color=#0000bb]mydatabase[/color][color=#007700]([/color][color=#0000bb]this[/color][color=#007700]); @[/color][color=#0000bb]override [/color][color=#007700]protected [/color][color=#0000bb]void oncreate[/color][color=#007700]([/color][color=#0000bb]bundle savedinstancestate[/color][color=#007700]) { [/color][color=#0000bb]super[/color][color=#007700].[/color][color=#0000bb]oncreate[/color][color=#007700]([/color][color=#0000bb]savedinstancestate[/color][color=#007700]); [/color][color=#0000bb]setcontentview[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]layout[/color][color=#007700].[/color][color=#0000bb]activity_2[/color][color=#007700]); [/color][color=#ff8000]//nhận dữ liệu gửi từ activity khác tới [/color][color=#0000bb]bundle mybundle [/color][color=#007700]= [/color][color=#0000bb]getintent[/color][color=#007700]().[/color][color=#0000bb]getextras[/color][color=#007700](); [/color][color=#0000bb]data [/color][color=#007700]= [/color][color=#0000bb]mybundle[/color][color=#007700].[/color][color=#0000bb]getstring[/color][color=#007700]([/color][color=#dd0000]"data"[/color][color=#007700]); [/color][color=#0000bb]key [/color][color=#007700]= [/color][color=#0000bb]mybundle[/color][color=#007700].[/color][color=#0000bb]getstring[/color][color=#007700]([/color][color=#dd0000]"key"[/color][color=#007700]); [/color][color=#ff8000]//.. [/color][color=#0000bb]dulieumahoa [/color][color=#007700]= ([/color][color=#0000bb]textview[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]textview2[/color][color=#007700]); [/color][color=#0000bb]khoagiaima [/color][color=#007700]= ([/color][color=#0000bb]textview[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]textview4[/color][color=#007700]); [/color][color=#0000bb]hienthiketquagiaima [/color][color=#007700]= ([/color][color=#0000bb]textview[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]textview5[/color][color=#007700]); [/color][color=#0000bb]giaima [/color][color=#007700]= ([/color][color=#0000bb]button[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]button1[/color][color=#007700]); [/color][color=#0000bb]chuyentrang [/color][color=#007700]= ([/color][color=#0000bb]button[/color][color=#007700]) [/color][color=#0000bb]findviewbyid[/color][color=#007700]([/color][color=#0000bb]r[/color][color=#007700].[/color][color=#0000bb]id[/color][color=#007700].[/color][color=#0000bb]button2[/color][color=#007700]); [/color][color=#ff8000]//hiện thị các giá trị nhận được [/color][color=#0000bb]dulieumahoa[/color][color=#007700].[/color][color=#0000bb]settext[/color][color=#007700]([/color][color=#0000bb]data[/color][color=#007700]); [/color][color=#0000bb]khoagiaima[/color][color=#007700].[/color][color=#0000bb]settext[/color][color=#007700]([/color][color=#0000bb]key[/color][color=#007700]); [/color][color=#ff8000]//thiết lập lắng nge button [/color][color=#0000bb]giaima[/color][color=#007700].[/color][color=#0000bb]setonclicklistener[/color][color=#007700](new [/color][color=#0000bb]onclicklistener[/color][color=#007700]() { @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onclick[/color][color=#007700]([/color][color=#0000bb]view v[/color][color=#007700]) { [/color][color=#ff8000]//hiển thị button [/color][color=#0000bb]chuyentrang[/color][color=#007700].[/color][color=#0000bb]setvisibility[/color][color=#007700]([/color][color=#0000bb]view[/color][color=#007700].[/color][color=#0000bb]visible[/color][color=#007700]); try { [/color][color=#ff8000]//mở kết nối dữ liệu [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]open[/color][color=#007700](); [/color][color=#ff8000]//lấy dữ liệu mảng giá trị nhị phân từ database [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]dulieumahoa [/color][color=#007700]= [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]getdata[/color][color=#007700]([/color][color=#0000bb]data[/color][color=#007700]); [/color][color=#ff8000]//đóng kết nối [/color][color=#0000bb]database[/color][color=#007700].[/color][color=#0000bb]close[/color][color=#007700](); [/color][color=#ff8000]//giải mã dữ liệu mã hóa với key ban đầu [/color][color=#0000bb]byte[/color][color=#007700][] [/color][color=#0000bb]kq [/color][color=#007700]= [/color][color=#0000bb]mycipher[/color][color=#007700].[/color][color=#0000bb]decodefile[/color][color=#007700]([/color][color=#0000bb]mycipher[/color][color=#007700].[/color][color=#0000bb]generatekey[/color][color=#007700]([/color][color=#0000bb]key[/color][color=#007700]), [/color][color=#0000bb]dulieumahoa[/color][color=#007700]); [/color][color=#ff8000]//ép giá trị giải mã về kiểu chuỗi string [/color][color=#0000bb]ketquagiaima [/color][color=#007700]= new [/color][color=#0000bb]string[/color][color=#007700]([/color][color=#0000bb]kq[/color][color=#007700], [/color][color=#dd0000]"utf-8"[/color][color=#007700]); [/color][color=#ff8000]//hiển thị kết quả giải mã [/color][color=#0000bb]hienthiketquagiaima[/color][color=#007700].[/color][color=#0000bb]settext[/color][color=#007700]([/color][color=#0000bb]ketquagiaima[/color][color=#007700]); } catch ([/color][color=#0000bb]exception e[/color][color=#007700]) { [/color][color=#ff8000]//lỗi [/color][color=#0000bb]hienthiketquagiaima[/color][color=#007700].[/color][color=#0000bb]settext[/color][color=#007700]([/color][color=#dd0000]"lỗi rồi !" [/color][color=#007700]+ [/color][color=#0000bb]e[/color][color=#007700].[/color][color=#0000bb]tostring[/color][color=#007700]()); } } }); [/color][color=#0000bb]chuyentrang[/color][color=#007700].[/color][color=#0000bb]setonclicklistener[/color][color=#007700](new [/color][color=#0000bb]onclicklistener[/color][color=#007700]() { @[/color][color=#0000bb]override [/color][color=#007700]public [/color][color=#0000bb]void onclick[/color][color=#007700]([/color][color=#0000bb]view v[/color][color=#007700]) { [/color][color=#0000bb]intent myintent [/color][color=#007700]= new [/color][color=#0000bb]intent[/color][color=#007700]([/color][color=#0000bb]activity2[/color][color=#007700].[/color][color=#0000bb]this[/color][color=#007700], [/color][color=#0000bb]mainactivity[/color][color=#007700].class); [/color][color=#0000bb]startactivity[/color][color=#007700]([/color][color=#0000bb]myintent[/color][color=#007700]); [/color][color=#0000bb]finish[/color][color=#007700](); } }); }}[/color] 
    6) video kết quả demo:


    bài viết đăng lên diễn đàn khác vui lòng ghi rõ nguồn: android.vn
    pass giải nén: http://android.vn
    support: thanhlong90.it@gmail.com
    chúc các bạn thành công!

  2. #2
    Ngày tham gia
    Mar 2015
    Bài viết
    0
    rất bổ ích :d

  3. #3
    Ngày tham gia
    Apr 2015
    Bài viết
    0
    cho mình hỏi chút là trong database có 2 record có trùng tentaikhoan thì cursor sẽ có 2 row trả về, khi đó mình sửa c.getcount()>0 và sau đó cho c.movetofist() để lấy row đầu tiên thì giải mã ra báo lỗi null pointer exception. long giải thích giúp mình nhé, cảm ơn bạn!

  4. #4
    Ngày tham gia
    Apr 2016
    Bài viết
    0
    "null pointer exception" có thể là cursor chưa lấy được giá trị, nó hiện tại đang là null. và tất nhiên nó đang null thì không thể thực thi được function "getcount()", bạn hãy thử đặt log để kiểm tra xem cursor có giá trị không nhé!

  5. #5
    Ngày tham gia
    Mar 2014
    Bài viết
    0
    cảm ơn long nhé, mình đã sửa được lỗi đó rồi

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    380
    ban long oi cho minh hoi
    sqlite co giới hạn dụng lượng của file database và dụng lượng giá trị mỗi col lưu trữ không vậy?
    vấn đề của mình gặp phải là khi lưu một file ảnh dạng byte[] vào trong database thì xảy ra lỗi khi bức ảnh có dung lượng lớn (1.5mb), còn file ảnh nhỏ thì chạy ok.
    bạn có biết nguyên nhân không?

  7. #7
    Ngày tham gia
    Nov 2014
    Bài viết
    0
    có giới hạn bạn nhé!

  8. #8
    Ngày tham gia
    Jan 2015
    Bài viết
    0
    hi anh, thank anh về bài hướng dẫn, nhưng có một vấn đề nhỏ, đó là khi decompile apk thì rất dễ dàng tìm được đoạn code giải mã và đặc biệt là khóa bí mật giấu trong code, khi đó thì họ có thể lấy được hoàn toàn database :d, vậy anh có cách nào che giấu được khóa bí mật ngay cả khi app mình bị decode không anh?

  9. #9
    Ngày tham gia
    Sep 2014
    Bài viết
    0
    thực tế thì em decode có ra được nguyên code java ban đầu ko cái đã ^^!

  10. #10
    Ngày tham gia
    May 2015
    Bài viết
    0
    @tường: nếu database để trên server thì diffie hellman liệu có giải quyết được bài toán này?

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •