How to protect read-only data in Swing app from tampering?

First off I am new to cryptography and trying to find the best approach for a problem.
We have a Swing application that uses xml-based template files to display complex forms and validate data entry. Based on the size and complexity of the forms it was deemed better to have a distributed stand-alone application instead of a web-based solution. However, we want to ensure users do not tamper with the template rules in order to pass the validation checks. All of the xml-based template files are distributed within a single jar file.
The first thought was to build a list of check-sums of the template files and to compare the template to the approariate check-sum from within the list before loading a template. This would prevent the more casual user from tampering with the file but not someone knowledgeable in check-sum who could recalculate the CRC and update the list after making changes.
Another thought was to use a private key to encrypt the CRC list before distribution and a public key to decrypt it during execution with the keys maintained in a keystore. However, once again, an adventurous user could weed through the obfuscated code to determine the password to the keystore, create a new keystore with the same password and use its private key to regenerate the CRC list from altered templates.
I feel like there must be a simpler approach that will provide a bullet prove implementation. Any suggestions?

I think you have to re-think your design.
Whether you use Java, C#,C or C++ a hacker can look through the binary (class file, exe file etc) and after working out what is happening he can modify your code.
It is my opinion that your best bet is to use client/server but even with that you cannot keep any private data or code on the client.
You will still have to think about 'man-in-the-middle' and 'spoof site' attacks.

Similar Messages

  • How can I read only a line of text from a file, line by line using Scanner?

    Here's the code I currently have for a program that finds a keyword from numerous files and prints every line in every file that has that keyword. The keyword is indicated by the first parameter in a command line and the files are every parameter after that. Right now, with the code I have, the program will not print multiple lines of each file if they contain the keyword. I am trying to solve this problem by figuring out a way to have a loop continue until an \n EOL character is found. I am not sure how to do this though. Here's the portion of code that I would like to change to do this. I need to add a condition somewhere after in.hasNext() I think to stop when it it hits a /n.:
    while (in.hasNext()) {
                        count++;
                        String nextWord = in.next();
                        lineOfText.add(nextWord);
                        if (nextWord.equals(keyword)) {
                            flag = true;
    import java.util.Scanner;
    import java.io.IOException;
    import java.io.FileNotFoundException;
    import java.io.FileInputStream;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    public class Find {
        static ArrayList<String> lineOfText = new ArrayList<String>();
        static boolean flag = false;
        public static void main(String args[]) {
                   run(args);
        public static void run(String args[]) {
            try {
                PrintWriter out = new PrintWriter("output.txt");
                String keyword = args[0];
                for (int i = 1; i < args.length; i++) {
                    Scanner in = new Scanner(new FileInputStream(args));
    int count = 0;
    while (in.hasNext()) {
    count++;
    String nextWord = in.next();
    lineOfText.add(nextWord);
    if (nextWord.equals(keyword)) {
    flag = true;
    if (flag == true) {
    System.out.print(args[i] + ": " );
    out.print(args[i] + ": " );
    for (String s : lineOfText) {
    System.out.print(s + " ");
    out.print(s + " ");
    System.out.print("\n");
    out.println(" ");
    lineOfText.clear();
    out.close();
    catch (FileNotFoundException e) {
    System.out.println("file not found!");
    catch (IOException e) {
    System.out.println(e);
    Thanks

    Well, I thought I had this program finished, then I realized I need to match the keyword anywhere in the file(including within a word) and print out each line that "contains" the keyword in each file. So, I need some way of testing to see if the keyword is a part of each word and then flag the line that contains the keyword. Is there some method to do this? Thanks
    Here's the code I have now:
    import java.util.Scanner;
    import java.io.IOException;
    import java.io.FileNotFoundException;
    import java.io.FileInputStream;
    import java.io.PrintWriter;
    public class Find {
        static String line = "";
        static boolean flag = false;
        static boolean flag2 = false;
        public static void main(String args[]) {
                    run(args);
        public static void run(String args[]) {
            try {
                PrintWriter out = new PrintWriter("output.txt");
                String keyword = args[0];
                System.out.print("Searching for the keyword: " + keyword);
                out.print("Searching for the keyword: " + keyword);
                System.out.print("  in files: ");
                out.print("  in files: ");
                for (int k = 1; k < args.length; k++)
                     System.out.print(args[k] + " ");
                     out.print(args[k] + " ");
                     System.out.println("\n");
                     out.println("");
                     out.println("");
                for (int i = 1; i < args.length; i++) {
                    Scanner in = new Scanner(new FileInputStream(args));
    while (in.hasNextLine()) {
    line = in.nextLine();
    String[] splitLine = line.split(" ");
    for (int j=0; j < splitLine.length; j++) {
    if (splitLine[j].equals(keyword) && flag2 == false) {
    flag = true;
    flag2 = true;
    System.out.print(args[i] + ": " + line + "\n");
    out.println(args[i] + ": " + line);
    flag2 = false;
    System.out.print("\n");
    out.println(" ");
    out.close();
    catch (FileNotFoundException e) {
    System.out.println("file not found!");
    catch (IOException e) {
    System.out.println(e);

  • How can I read/write data files (text file) from PL/SQL Script

    I had an oracle forms pl/sql program to read/write a data file (text file). When this code is run on a command line as a PL/SQL script using the SQL*Plus I am getting an error:
    -- sample.sql
    DECLARE
      vLocation                 VARCHAR2(50)  := 'r:\';
      vFilename                 VARCHAR2(100) := 'sample.dat';
      vTio                   TEXT_IO.FILE_TYPE;
      vLinebuf               VARCHAR2(2000);
      vRownum               NUMBER        := 0;
      -- use array to store data FROM each line of the text file     
      TYPE           array_type IS VARRAY(15) OF VARCHAR2(100);
      vColumn      array_type := array_type('');
      PROCEDURE prc_open_file(p_filename IN VARCHAR, p_access IN VARCHAR2) is
      BEGIN
        vTio := TEXT_IO.FOPEN(vLocation||p_filename,p_access);
      EXCEPTION
        WHEN OTHERS then
          --  raise_application_error(-20000,'Unable to open '||p_filename);
          message(sqlerrm);pause;
      END;
      PROCEDURE prc_close_file is
      BEGIN
        IF TEXT_IO.IS_OPEN(vTio) then
           TEXT_IO.FCLOSE(vTio);
        END IF;
      END;
    BEGIN
      --extend AND initialize the array to 4 columns
      vColumn.EXTEND(4,1);
      prc_open_file(vFilename,'r');
      LOOP
          LTEXT_IO.GET_LINE(vTio,vLinebuf);
          vColumn(1)  := SUBSTR(vLineBuf, 1, 3);
          vColumn(2)  := SUBSTR(vLineBuf, 5, 8);
          vColumn(3)  := SUBSTR(vLineBuf,10,14);     
          Insert Into MySampleTable
          Values
            (vColumn(1), vColumn(2), vColumn(3));
          EXIT WHEN vLinebuf IS NULL;
       END LOOP;
       prc_close_file;
    END;
    SQL> @c:\myworkspace\sql\scripts\sample.sql;
    PLS-00201: identifier 'TEXT_IO.FILE_TYPE' must be declaredIt works on the oracle forms but not on the SQL*Plus. Is there an alternative method using a PL/SQL script? A simple sample would help. Thanks.

    Did you ever noticed the search box at the right side of the forum?
    A quick search (limited to this years entries) brought up this thread for example
    Re: UTL_FILE Examples

  • How do I transfer my data files and apps from my iphone 3gs to my new 4g?

    How do I transfer all of my data from my iphone 3gs to my new 4g?

    http://support.apple.com/kb/HT2109

  • URGENT!Can anyone tell me how to completely delete all data of an app from an Apple ID?

    I am really stuck here.My brother needs help deleting ALL traces of some inappropriate apps that he wasnt supposed to download from his Apple ID.Now our mom is very angry and stressed out and I really hate it when she is angry,so can anyone help me?

    That is going to depend on where the application is stored...
    If it's Bloatware (e.g. Verizon Navigator, Bing, etc...) you will need Root permission on your phone to remove it.
    If it's something you installed from the Google Play Store, then all you will need to do is open the Play store, select the Menu button, select "My Apps" and then open the app.  This should give you the "Uninstall" button.
    Hope this helps
    Chief

  • Virt-install hangs at "Write protecting the kernel read-only data",

    I am trying to Install Oracle Linux 5.4 as a Paravirtualized Machine on an Oracle VM Server (2.2.1).
    Following are the steps that I followed:
    I have the dvd iso file on /OVS/iso_pool
    1. mkdir -p /el/EL5-x86
    2. mount -t iso9660 -o ro,loop /OVS/iso_pool/Enterprise-R5-U4-Server-x86_64-dvd.iso /el/EL5-x86
    3. service portmap start
    4. service nfs start
    5. exportfs *:/el/EL5-x86
    6. mkdir /OVS/running_pool/vm01
    7. virt-install
    and gave the following details
    Name of the virtual machine: vm01
    RAM:7168
    disk path: /OVS/running_pool/vm01/system.img
    disk space: 80GB
    graphics support: yes
    install location- nfs:OVM server ipaddress:/el/EL5-x86
    It starts the install, but hangs at
    XENBUS: Device with no driver: device/vbd/51713
    XENBUS: Device with no driver: device/vbd/51714
    XENBUS: Device with no driver: device/vif/0
    XENBUS: Device with no driver: device/console/0
    Initalizing network drop monitor service
    Write protecting the kernel read-only data: 483k
    Can you please help
    Thanks,
    Radhika

    Yes I am able to connect to the guest vnc console, and proceed with the install.
    I did, Choose a language, choose a keyboard, configure TCP/IP, Manual TCP/IP configuration, after this I am getting a message "That directory could not be mounted from the server"
    I tried giving the IPAdress of the OVM Server where the directory was mounted, nothing is working. I cannot proceed any further.

  • How to populate read only input field or text view form value help only

    Hi experts,
    I have one requirement to populate a read-only field or text view from value help.
    User cant put any value there.value comes only from the value help.
    For example,
    when we read context using Code Wizard,we cant type any value there.value only comes from value help.
    How to implement that functionality?
    Please reply.
    Thanks in advance,
    Subhasis.

    Yes it is possible.
    1.Create a context Attribute and then bind this attribute to the Text view UI element.
    2. read context attribute and then set value to the context attribute like this way.
    DATA:
        elem_context1                        TYPE REF TO if_wd_context_element,
        stru_context1                        TYPE if_first=>element_context ,
        item_potxt                          LIKE stru_context-potxt.
    get element via lead selection
      elem_context1 = wd_context->get_element(  ).
    stru_context1-potxt = 'PO'.
    elem_context1->set_attribute(
        VALUE  = stru_context1
        name   = 'POTXT'
    thanks
    Suman
    Edited by: suman kumar chinnam on Sep 9, 2008 12:12 PM

  • How to make read only field in Task list?

    Hi All,
    How to make read only field in Task list?

    This can be done one of two ways:
    1. Customize the form in Infopath, right click your field and disable the control.
    2. Use JavaScript/jQuery on the page to disable the element.
    Andy Wessendorf SharePoint Developer II | Rackspace [email protected]

  • Using cache for read only data

    In my application I have to display some read only data (in number of drop down present on several portlets)
    this data might be driven from the database or from some XML/property file.Not decided yet.
    for example : Country /state/City/Zip code etc..
    Kindly let me know how can I implement the same in Weblogic Portal 10.0.
    Do I have to use some third party caching mechanism like Hibernate cache for this
    or
    Weblogic portal do support caching ??
    Please suggest the all possible soultions to implement this.

    Cache cache = CacheFactory.getCache("yourCache"); //any name can be passed, and you can create as many as you want , perhaps by functionality, perhaps by size etc. If you want to configure statically you must use this name in the xml file. If you define it in the xml file , you can administer the cache from Portal Admin
    cache.put("key","value");
    cache.get("key");
    There are other advanced things you can do like Time To live / flushing / auto reload the cache which is all described in the javadoc
    regards
    deepak

  • Access denied to a READ-ONLY data source

    Post Author: covey9257
    CA Forum: Data Connectivity and SQL
    I'm using Crystal 10 sevice pack 6.  My report is using an ODBC connection to a PSql 9.5 stored procedure.  The stored procedure creates a temp table and inserts records from 3 different ticket tables.  It has one parameter in it that selects which location to load the table with.  My report works fine as long as I don't try to put any of the fields from the temp table on the report.  If I do, then I get the following error.
    Failed to open a rowset. Details: 42000:&#91;Pervasive&#93;&#91;ODBC Client Interface&#93;&#91;LNA&#93;&#91;Pervasive&#93;&#91;ODBC Engine Interface&#93;&#91;Data Record Manager&#93;&#91;SPEng&#93;&#91;Pervasive&#93;&#91;ODBC Engine Interface&#93;Access denied to a READ-ONLY data source.
    I found that this was an issue in Crystal 9.0, but nothing with cr 10.
    Does anyone know of a work around or fix for this scenario??
    Thanks - Cathy

    Thanks for the quick reply Don.
    If you have the option that Pervasive uses to not use the exclusive lock on the DB try adding it to the SQLExpression function in CR.
    I am not sure how to accomplish this.  I've done some quick searching but cannot come up with SQL that indicates locking unless I am using some kind of language like VB or C#.
    Here is my Command Object statement
    INSERT INTO RASAPSign
    (sVendNo, sChqNo, dtDateSigned)
    VALUES
    ('{?VendNum}', '{?ChqNum}', CURDATE());
    SELECT sVendNo, sChqNo, dtDateSigned
    FROM RASAPSign
    WHERE sVendNo = '{?VendNum}' and sChqNo = '{?ChqNum}'
    Can you give me an idea of what to change?  Or at least what terminology to search for?
    I tried this option with BEGIN and END
    BEGIN
    INSERT INTO RASAPSign
    (sVendNo, sChqNo, dtDateSigned)
    VALUES
    ('{?VendNum}', '{?ChqNum}', CURDATE());
    END
    SELECT sVendNo, sChqNo, dtDateSigned
    FROM RASAPSign
    WHERE sVendNo = '{?VendNum}' and sChqNo = '{?ChqNum}'
    But I get a syntax error.
    Thanks, rasinc
    Edited by: rasinc on Apr 14, 2011 3:28 PM
    To show code with Begin and End

  • Tabular Form Read Only Date Picker

    Hello,
    I have two or three Items with date pickers and do not want to implement
    this code because it will be too many buttons on my form. I need to clear one item
    at a time when the datepicker is readonly but, in a tabular form.
    function f_clear_items()
        {$x('P1_ITEMA').value = ''};
        {$x('P1_ITEMB').value = ''};
        }Then once I create a url button and pass this function I can clear the datepicker's. But, I
    was wondering is there a cleaner way to this.
    I have other items on the page that are named the same but, in different tables. I only want
    to clear each date picker item at a time. This code works fine for a regular form.
    -Element Post Element Text for the Item to Clear
    a href="javascript:setValue('P1_ITEMA','');">Clear Date</aThere is a thread named 'How to clear a read only page Item...?' that states how this code works but, does not
    work for a tabular form in a Master Detail page. There is a link on side the Date Picker to clear item specified but, in a tabular form Item, there is no Element tab, any ideas on how to clear a readonly date picker item using a tabular form
    and not using a button for each item, thanks in advance. I am using Application Express 3.2.0.00.27.

    Dan,
    I totally understand your point of view. So, this tabular form aspect was not tested once the Clear Date link was discovered to clear a Read Only date field. Yes, using a button to clear a date is great but, I do not want to clear every date or specified item with the click of one button for this application. It is very useful but, not for my needs at the moment.
    Basically, if a date is selected and it needs to be cleared out you can just delete the value. But, if the date is readonly you can not clear/delete the date value unless you have the Clearing functionality for a particular item using the datepicker. It may not be worth the trouble Dan like you state by adding this extra code to the calender. If an invalid date is entered an error will appear anyway.
    Thanks alot Dan for expanding my mind and showing me some JQuery and providing me with this link to do some further research if needed, thanks again.

  • How to change read only folders into normal ones...i can't get any filed from my harddrive

    how to change read only folders into normal ones...i can't get any filed from my hard drive..it shows read only

    Which HDD are you referring to, an external one, or the internal SSD?
    If external, which format is it in?

  • Editable and Read-Only Date Picker have different display formats -- Bug?

    Hi all,
    This is a follow on to a previous posting about getting a Date Picker field to display read-only (Date Picker and Read-Only Condition works on LAST state of element
    Now past that hurdle, I have noticed something about the date picker field when it is displays read-only. Namely, the date format is not the format selected, nor does the read-only date format comply with the format mask in the source section.
    I've modified my small test app to work as intended in order to demonstrate this feature. I also opened it up so everyone can see it <blush>. You can find it here: http://htmldb.oracle.com/pls/otn/f?p=42513: Please navigate to the Update Project tab.
    When a project in Program One through Four is selected (which has a Spec Committed date), the date is displayed DD-MON-YY format. When a project the other Programs (which do not have Spec Committed dates at the time of this writing) are selected, and a date value selected with the date picker, the date is displayed in the anticipated DD-MON-YYYY format.
    Anyone else notice this, or have I just missed something obvious?
    Thanks,
    Petie

    I'm not sure why this happens but to work around it I added this before header process code to the page:
    execute immediate 'alter session set nls_date_format = ''DD-MON-YYYY''';
    Scott

  • How can i read the data fromtext fieldsin the form of bytes??

    Hi friends,
    How can i read the data fromtext fieldsin the form of byte string while using Socket connection.
    I have two text fields. i need to send the data from the textfeilds to the server using a byte string.
    Can anyboday help me???
    KK

    Does <cfdbinfo> work for Access DBs?
    You might be better off asking this on a MS Access forum.  It's more of an Access issue than a CF one.
    Adam

  • How applet can read continuous data stream

    How applet can read continuous data from server(like database update)

    You can keep opened a socket to the server. You can send any data from/to the applet in that way.

Maybe you are looking for

  • ON-LOGON does not fire in Form B, called from Form A

    We have a situation like this. We are using Forms (Forms [32 Bit] Version 10.1.2.0.2 (Production)). We migrated this application to Forms 11.2.0.1.0. Problem is that the ON-LOGON trigger does not fire in the 2nd level forms. Our application work like

  • Pentool in CS5 is not creating a shape

    Hi, Does anyone know why when using the pen tool it doesnt convert to a shape. I'm using CS5 which i've only recently installed so I'm assuming something has changed in the way the tool is used? But I can't figure it out. I'm creating the shape all o

  • My mac is incredibly slow all of a sudden!

    I went to a friend's house and tried to use his internet. It said there was a problem with the IP address so I just closed my mac and forgot about it. When I got home the whole thing is ridiculously slow. Websites take a minute a page to load so it's

  • Overview of payment term per vendor?

    Dear all, My customer is using report s_alr_87012093 as an overview for vendors. Now they want to see an overview over what payment term is used per vendor, to see if all payment terms are correct or not. Is it possible to get that overview in that r

  • Business area readjustment run not updating

    Dear Experts, We have run business area readjustment on 27.11.2009 with the T.Code : F.5D, F.5E, the update run identification no. is 1018 (key date 26.11.2009). After this we had run on 28.11.2009 with the key data of 27.11.2009 ;it is not updating