Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Minor
    • Resolution: Done
    • Affects Version/s: 2.6, 2.7, 2.8, 2.9, 2.10, 2.11, 2.12
    • Fix Version/s: 3.0
    • Steps to Reproduce:
      Hide

      See nabble forum post.

      Show
      See nabble forum post.
    • Estimated Difficulty:
      Low

      Description

      Storing any random byte array into a UTF-8 string causes invalid characters to be replaced with hex value FFFD. 2 nodes on different JVMs using ENCRYPT may not be able to communicate because they calculate different MD5 digest values.

      Main thread:
      http://old.nabble.com/ENCRYPT-puts-illegal-chars-into-UTF-8-String-seems-to-be-unintended--td31497430.html#a31524432

      More description of why UTF-8 does this recplacement:
      http://en.wikipedia.org/wiki/UTF-8

      The fix will possibly make older versions of ENCRYPT incompatible since it will change the calculated MD5 digest value.

      To fix it, ENCRYPT should be changed from this:
      private void initSymCiphers(String algorithm, SecretKey secret) throws Exception

      { ... symVersion=new String(digest.digest(), "UTF-8"); ... }

      To something like this (byteArrayToHexString() copied from http://jkmessenger.googlecode.com/svn-history/r8/trunk/CryptoUtils.java):
      private void initSymCiphers(String algorithm, SecretKey secret) throws Exception {
      ...
      symVersion = byteArrayToHexString(digest.digest())
      ...

      public static String byteArrayToHexString(byte[] b){
      StringBuffer sb = new StringBuffer(b.length * 2);
      for (int i = 0; i < b.length; i++){
      int v = b[i] & 0xff;
      if (v < 16)

      { sb.append('0'); }

      sb.append(Integer.toHexString(v));
      }
      return sb.toString().toUpperCase();
      }

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                belaban Bela Ban
                Reporter:
                McMan Ken Michie
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: