Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 237
  • Last Modified:

Saving an encrypted password

I would like to save an encrypted password using the Properties.store method.  The problem is that all encryption algorithms return a byte array and I need to store a string.

Is there a way to use the store method with an encrypted password?
0
rossc
Asked:
rossc
  • 3
1 Solution
 
KoboldCommented:
Take your byte and transfort them in HEX format like
E50756

Code will look like:

public class Hex {

    private static final char hexDigits[] = {
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        'A', 'B', 'C', 'D', 'E', 'F'
    };

    public static String toString(byte abyte0[], int i, int j) {
        char ac[] = new char[j * 2];
        int k = 0;
        for(int l = i; l < i + j; l++) {
            byte byte0 = abyte0[l];
            ac[k++] = hexDigits[byte0 >>> 4 & 0xf];
            ac[k++] = hexDigits[byte0 & 0xf];
        }

        return new String(ac);
    }

    public static String toString(byte abyte0[]) {
        return toString(abyte0, 0, abyte0.length);
    }
};
0
 
KoboldCommented:
I forgot to send the code for passing from string to byte:

    public static byte[] fromString(String s) {
        int i = s.length();
        byte abyte0[] = new byte[(i + 1) / 2];
        int j = 0;
        int k = 0;
        if(i % 2 == 1)
            abyte0[k++] = (byte)fromDigit(s.charAt(j++));
        while(j < i)
            abyte0[k++] = (byte)(fromDigit(s.charAt(j++)) << 4 | fromDigit(s.charAt(j++)));
        return abyte0;
    }
0
 
KoboldCommented:
Oups...

    public static int fromDigit(char c) {
        if(c >= '0' && c <= '9')
            return c - 48;
        if(c >= 'A' && c <= 'F')
            return (c - 65) + 10;
        if(c >= 'a' && c <= 'f')
            return (c - 97) + 10;
        else
            throw new IllegalArgumentException("invalid hex digit '" + c + "'");
    }

0
 
rosscAuthor Commented:
I used the Acme.Crypto algorithm to encrypt the password.  To write it to disk, I had to create a string using ISO 8859-1 character encoding - new String(cipherText,"ISO-8859-1").

The Properties methods setProperty, getProperty, and store worked fine with the ISO-8859-1 strings.

Kobold,  your answer probably would have worked so I will give you the points.
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now