Welcome to my website. I am always posting links to photo albums, art, technology and other creations. Everything that you will see on my numerous personal sites is powered by the formVistaTM Website Management Engine.

icon.linkedin.jpgicon.twitter.jpg

  • Subscribe to this RSS Feed
  • Solution for 'NX service is not available'
    03/20/2012 4:18PM

    When first installing NXServer I have seen a number of occastions when the initial run of

    # /usr/NX/bin/nxserver --install

    Does not necessarily work correctly and simply running the following commands has worked.

    # /usr/NX/bin/nxsetup --uninstall --purge --clean

    then

    # /usr/NX/bin/nxsetup --install --setup-nomachine-key

    If the previous uninstall/install command doesn't work, try rpm -e nx*.rpms and reinstalling the rpms before trying to run the nxserver --install command again.

  • Resources for Understanding Object-Oriented JavaScript
    02/20/2012 3:12PM
  • JavaScript Resources
    02/20/2012 3:07PM
  • ECMAScript 5 Compatibility Table
    02/20/2012 2:16PM

    Very handy ECMAScript 5 compatibility table for the JavaScript programmer:

    http://kangax.github.com/es5-compat-table/

  • Creating a MD5 Hash in Java From Either a String or the Byte Value of a Long
    02/07/2012 11:53AM

    Following is a quick example of how to generate an MD5 Hash (SHA-256, SHA-512 or any other supported hash algorithm) of either a String or the byte value of a long.  You should be able to adapt for your particular application:

    package com.ryanchapin.util;

    import java.io.ByteArrayOutputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;

    public class HashGenerator {

        public static String createHash(long input, String hashAlgorithm) {
            // Generate a byte array from the long
            // Extract the byte value of the long
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(bos);

            try {
                dos.writeLong(input);
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                dos.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }

            byte[] byteArray = bos.toByteArray();
            return bytesToHex(computeHashBytes(byteArray, hashAlgorithm));
        }

        public static String createHash(String input, String hashAlgorithm) {
            // Generate a byte array from the input String.
            byte[] inByteArray = null;
            try {
                inByteArray = input.getBytes("UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

            return bytesToHex(computeHashBytes(inByteArray, hashAlgorithm));
        }

        private static byte[] computeHashBytes(byte[] inputBytes, String hashAlgorithm) {
            // Instantiate a MessageDigest instance configured with the desired
            // algorithm.
            MessageDigest md = null;
            try {
                md = MessageDigest.getInstance(hashAlgorithm);
            } catch(NoSuchAlgorithmException e) {
                e.printStackTrace();
            }

            // This isn't necessary in this context, but should this
            // be refactored to use the MessageDigest as a member this
            // enables the reuse of the same MessageDigest instance.
            md.reset();
            md.update(inputBytes);
            return md.digest();
        }

        private static String bytesToHex(byte[] hashBytes) {

            // Convert the hashBytes to a String of hex values
            StringBuilder retVal   = new StringBuilder();
            StringBuilder hexValue = new StringBuilder();

            for (byte hashByte : hashBytes) {
                // Flush our StringBuilder to be used as a container for the
                // hex value for each byte as it is read.
                hexValue.delete(0, hexValue.length());
                hexValue.append(Integer.toHexString(0xFF & hashByte));

                // Add a trailing '0' if our hexValue is only 1 char long
                if (hexValue.length() == 1) {
                    hexValue.insert(0, '0');
                }
                retVal.append(hexValue);
            }
            return retVal.toString();
        }

        public static void main(String[] args) {

            // Hash using MD5
            System.out.println(createHash("12345", "MD5"));
            System.out.println(createHash(12345L, "MD5"));

            // Hash using SHA-256
            System.out.println(createHash("12345", "SHA-256"));
            System.out.println(createHash(12345L, "SHA-256"));
        }
    }

Advanced Search

Categories

Archives