title: DES Encryption on Blackberry gone wrong
body: <p>I have an application developed on BlackBerry JDE 5.0.0 that encrypts a String using DES algorithm with ECB mode. After the encryption, the result is encoded by base64 encoding. But whenever I compare the result that i get from my encryption method with the result that i get on the online encryptor engine, it always give different result on the several last character. I tried to decrypt the result that i get form my encryption method with the online encriptor engine and it looks like the result is not the valid one. So how can I fix that different result on the several last character?</p>
  
  <p>Here my encryption method code:</p>
  
  <pre><code>public String encryptDESECB(String text) throws MessageTooLongException
  {
      byte[] input = text.getBytes();
      byte[] output = new byte[8];
      byte[] uid = null;
      uid = "431654625bd37673e3b00359676154074a04666a".getBytes();
      DESKey key = new DESKey(uid);
      try {
              DESEncryptorEngine engine = new DESEncryptorEngine(key);
              engine.encrypt(input, 0, output, 0);
              String x= BasicAuth.encode(new String(output));
              System.out.println("AFTER ENCODE"+x);
              return new String(x);
      } catch (CryptoTokenException e) {
          return "NULL";
      } catch (CryptoUnsupportedOperationException e) {
          return "NULL";
      }
  }
  </code></pre>
  
  <p>The String that i want to encrypt is "00123456" 
  The Result that i get from my encryption method is:YnF2BWFV/8w=
  The Result that i get from online encryptor engine (<a href="http://www.tools4noobs.com/online_tools/encrypt/" rel="nofollow">http://www.tools4noobs.com/online_tools/encrypt/</a>) : YnF2BWFV9sw=
  The Result that i get from android (With the same encryption algorithm &amp; Method) : YnF2BWFV9sw=</p>
  
  <p>Here's the code on Android:</p>
  
  <pre><code>public static String encryptDesECB(String data) {
      try {
          DESKeySpec keySpec = newDESKeySpec("431654625bd37673e3b00359676154074a04666a".getBytes("UTF8"));
          SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
          SecretKey key = keyFactory.generateSecret(keySpec);
  
          // ENCODE plainTextPassword String
          byte[] cleartext = data.getBytes("UTF8");
  
          Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding");
          cipher.init(Cipher.ENCRYPT_MODE, key);
  
          Logger.log(Log.INFO, new String(cipher.doFinal(cleartext)));
  
          String encrypedPwd = Base64.encodeToString(cipher.doFinal(cleartext), Base64.DEFAULT);
  
          Logger.log(Log.INFO, encrypedPwd);
  
          return encrypedPwd;
  
      } catch (Exception e) {
          Logger.log(e);
          return null;
      }
  }
  </code></pre>
  
  <p>Can anyone help me with this?</p>