Exemplo n.º 1
0
 @Test
 public void testEncodeString() {
   final String text = "--- abcdefg \r\n hijklmn \t opqrst \u3000 uvwxyz ---";
   String base64 = Base64Util.encodeString(text);
   String restore = Base64Util.decodeString(base64);
   assertEquals(text, restore);
 }
Exemplo n.º 2
0
 @Test
 public void testEncode() {
   final byte[] data = "abcdefg \r\n hijklmn \t opqrst \u3000 uvwxyz".getBytes();
   String base64 = Base64Util.encode(data);
   byte[] restore = Base64Util.decode(base64);
   assertEquals(data.length, restore.length);
   for (int i = 0; i < data.length; i++) {
     assertEquals(data[i], restore[i]);
   }
 }
Exemplo n.º 3
0
 @Test
 public void randomTest() {
   final Random rnd = new Random();
   final int cnt = 10;
   final int maxSize = 1024;
   for (int i = 0; i < cnt; i++) {
     for (int j = 0; j < maxSize; j++) {
       final byte[] data = new byte[j];
       rnd.nextBytes(data);
       final String encstr = Base64Util.encode(data);
       final byte[] decoded = Base64Util.decode(encstr);
       Assert.assertArrayEquals(data, decoded);
     }
   }
 }
Exemplo n.º 4
0
  private static String csr() {
    try {
      KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
      keyGen.initialize(2048);
      KeyPair keyPair = keyGen.generateKeyPair();
      X500Principal subject =
          new X500Principal(
              "CN = edea87b4-034d-48dc-94dd-e7cdcfdde370/10562468, OU = fgdfgretertgdfg, O = VW, L = US");
      ContentSigner signer = new JcaContentSignerBuilder("SHA1withRSA").build(keyPair.getPrivate());
      PKCS10CertificationRequestBuilder builder =
          new JcaPKCS10CertificationRequestBuilder(subject, keyPair.getPublic());
      PKCS10CertificationRequest csr = builder.build(signer);

      String type = "CERTIFICATE REQUEST";
      PemObject pem = new PemObject(type, csr.getEncoded());
      StringWriter str = new StringWriter();
      PEMWriter pemWriter = new PEMWriter(str);
      pemWriter.writeObject(pem);
      pemWriter.close();
      str.close();
      Log.d("Test", "" + str);
      return Base64Util.getStringAsBase64(str.toString());
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    } catch (OperatorCreationException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return "";
  }
Exemplo n.º 5
0
  /**
   * @param strKey key
   * @param strIvKey 矢量key
   * @param strContent 要解密的内容
   * @return 加密后的字符串,失败返回null
   */
  public static String encode(String strKey, String strIvKey, String strContent) {

    IvParameterSpec zeroIv = new IvParameterSpec(strIvKey.getBytes());
    SecretKeySpec key = new SecretKeySpec(strKey.getBytes(), "AES");
    Cipher cipher;
    byte[] encryptedData = null;

    try {
      cipher = Cipher.getInstance(TRANSFORMATION);
      cipher.init(Cipher.ENCRYPT_MODE, key, zeroIv);
      encryptedData = cipher.doFinal(strContent.getBytes(CHARSET));
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    } catch (NoSuchPaddingException e) {
      e.printStackTrace();
    } catch (InvalidAlgorithmParameterException e) {
      e.printStackTrace();
      Log.e(TAG, "无效的矢量key");
    } catch (InvalidKeyException e) {
      e.printStackTrace();
      Log.e(TAG, "无效的key");
    } catch (BadPaddingException e) {
      e.printStackTrace();
    } catch (IllegalBlockSizeException e) {
      e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }

    if (encryptedData == null) {
      return null;
    }
    return Base64Util.encode(encryptedData);
  }
Exemplo n.º 6
0
 /**
  * Parse to a ProtocolHashedVersion from a given string version/base64-hash combination.
  *
  * @param startVersion the starting version
  * @param base64Hash the base64 hash
  * @throws IllegalArgumentException on bad data
  * @return a parsed protobuf object
  */
 private static ProtocolHashedVersion parseFromUnsafe(String startVersion, String base64Hash)
     throws IllegalArgumentException {
   return ProtocolHashedVersion.newBuilder()
       .setVersion(Long.parseLong(startVersion))
       .setHistoryHash(Base64Util.decode(base64Hash))
       .build();
 }
Exemplo n.º 7
0
 @Test
 public void decodeBig() {
   byte[] res =
       Base64Util.decode(
           "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNldGV0dXIgc2FkaXBzY2luZyBlbGl0ciwg\n"
               + "c2VkIGRpYW0gbm9udW15IGVpcm1vZCB0ZW1wb3IgaW52aWR1bnQgdXQgbGFib3JlIGV0IGRvbG9y\n"
               + "ZSBtYWduYSBhbGlxdXlhbSBlcmF0LCBzZWQgZGlhbSB2b2x1cHR1YS4gQXQgdmVybyBlb3MgZXQg\n"
               + "YWNjdXNhbSBldCBqdXN0byBkdW8gZG9sb3JlcyBldCBlYSByZWJ1bS4gU3RldCBjbGl0YSBrYXNk\n"
               + "IGd1YmVyZ3Jlbiwgbm8gc2VhIHRha2ltYXRhIHNhbmN0dXMgZXN0IExvcmVtIGlwc3VtIGRvbG9y\n"
               + "IHNpdCBhbWV0LiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2V0ZXR1ciBzYWRpcHNj\n"
               + "aW5nIGVsaXRyLCBzZWQgZGlhbSBub251bXkgZWlybW9kIHRlbXBvciBpbnZpZHVudCB1dCBsYWJv\n"
               + "cmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1eWFtIGVyYXQsIHNlZCBkaWFtIHZvbHVwdHVhLiBBdCB2\n"
               + "ZXJvIGVvcyBldCBhY2N1c2FtIGV0IGp1c3RvIGR1byBkb2xvcmVzIGV0IGVhIHJlYnVtLiBTdGV0\n"
               + "IGNsaXRhIGthc2QgZ3ViZXJncmVuLCBubyBzZWEgdGFraW1hdGEgc2FuY3R1cyBlc3QgTG9yZW0g\n"
               + "aXBzdW0gZG9sb3Igc2l0IGFtZXQuIDEyMzQ1IS84Ly8vMzQ1KiY=");
   assertEquals(
       new String(res),
       "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod "
           + "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero "
           + "eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata "
           + "sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing "
           + "elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed "
           + "diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd "
           + "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 12345!/8///345*&");
 }
Exemplo n.º 8
0
 public static String down(String imgURL, String fmt) throws Exception {
   // byte[] streamToByte = streamToByte(new URL(imgURL).openStream());
   byte[] streamToByte = streamToByte(new URL(imgURL).openStream(), fmt);
   // for (byte b : streamToByte) {
   // System.out.println( " ** "+b);
   // }
   return Base64Util.encode(streamToByte);
 }
Exemplo n.º 9
0
  public static String encryptPassword(String decPwd, Integer userId) throws Exception {
    String encPwd = null;
    String passwordToGenKey = "IUSER" + userId;

    // Obtener el texto que va a dar el hash inicial
    byte buf[] = passwordToGenKey.getBytes("ISO-8859-1");

    Security.addProvider(new BouncyCastleProvider());

    // Obtener el hash
    MessageDigest md = MessageDigest.getInstance("MD5", "BC");

    md.update(buf);
    byte hash[] = md.digest();

    // Aunque no lo diga en ninguna parte, el cryptoapi usa una clave de 128
    // bits con todo ceros
    // menos los 5 primeros bytes para cifrar....
    byte newHash[] = {
      (byte) hash[0],
      (byte) hash[1],
      (byte) hash[2],
      (byte) hash[3],
      (byte) hash[4],
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00
    };

    // Obtener la key basada en ese hash
    SecretKeySpec key = new SecretKeySpec(newHash, "RC4");

    // Obtener el objeto Cipher e inicializarlo con la key
    Cipher cipher = Cipher.getInstance("RC4", "BC");
    cipher.init(Cipher.ENCRYPT_MODE, key);

    // Obtener los datos a cifrar
    byte bufPlain[] = decPwd.getBytes("ISO-8859-1");

    // cifrar
    byte bufCipher[] = cipher.doFinal(bufPlain);

    encPwd = Base64Util.encode(bufCipher);

    return encPwd;
  }
Exemplo n.º 10
0
 @Test
 public void boundaryTest() {
   final byte[][] testcases = {
     makeArray(0, 0),
     makeArray(1, 0),
     makeArray(2, 0),
     makeArray(1, 127),
     makeArray(1, 128),
     makeArray(1, 255),
     makeArray(2, 127),
     makeArray(2, 128),
     makeArray(2, 255),
     makeArray(3, 127),
     makeArray(3, 128),
     makeArray(3, 255),
   };
   for (byte[] data : testcases) {
     final String encstr = Base64Util.encode(data);
     final byte[] decoded = Base64Util.decode(encstr);
     Assert.assertArrayEquals(data, decoded);
   }
 }
Exemplo n.º 11
0
  public static String decryptPasswordLDAP(String pwdLdap) throws Exception {
    String passwordToGenKey = "IDOCLDAP";

    byte dPasswordLDAP[] = Base64Util.decode(pwdLdap);
    // Obtener el texto que va a dar el hash inicial
    byte buf[] = passwordToGenKey.getBytes("ISO-8859-1");

    Security.addProvider(new BouncyCastleProvider());

    // Obtener el hash
    MessageDigest md = MessageDigest.getInstance("MD5", "BC");

    md.update(buf);
    byte hash[] = md.digest();

    // Aunque no lo diga en ninguna parte, el cryptoapi usa una clave de 128
    // bits con todo ceros
    // menos los 5 primeros bytes para cifrar....
    byte newHash[] = {
      (byte) hash[0],
      (byte) hash[1],
      (byte) hash[2],
      (byte) hash[3],
      (byte) hash[4],
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00
    };

    // Obtener la key basada en ese hash
    SecretKeySpec key = new SecretKeySpec(newHash, "RC4");

    // Obtener el objeto Cipher e inicializarlo con la key
    Cipher cipher = Cipher.getInstance("RC4", "BC");
    cipher.init(Cipher.DECRYPT_MODE, key);

    // descifrar
    byte bufCipher[] = cipher.doFinal(dPasswordLDAP);

    String descPwdLdap = new String(bufCipher);

    return descPwdLdap;
  }
 public static String toString(Object value, String pattern) {
   if (value == null) {
     return null;
   } else if (value instanceof String) {
     return (String) value;
   } else if (value instanceof java.util.Date) {
     return toString((java.util.Date) value, pattern);
   } else if (value instanceof Number) {
     return toString((Number) value, pattern);
   } else if (value instanceof byte[]) {
     return Base64Util.encode((byte[]) value);
   } else {
     return value.toString();
   }
 }
Exemplo n.º 13
0
  /**
   * @param strKey key
   * @param strIvKey 矢量key
   * @param strContent 要解密的内容
   * @return 解密后的字符串,失败返回null
   */
  public static String decode(String strKey, String strIvKey, String strContent) {

    byte[] byteMi = Base64Util.decode(strContent);
    IvParameterSpec zeroIv = new IvParameterSpec(strIvKey.getBytes());
    SecretKeySpec key = new SecretKeySpec(strKey.getBytes(), "AES");
    Cipher cipher;
    byte[] decodedData = null;

    try {
      cipher = Cipher.getInstance(TRANSFORMATION);
      cipher.init(Cipher.DECRYPT_MODE, key, zeroIv);
      decodedData = cipher.doFinal(byteMi);
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    } catch (NoSuchPaddingException e) {
      e.printStackTrace();
    } catch (IllegalBlockSizeException e) {
      e.printStackTrace();
    } catch (BadPaddingException e) {
      e.printStackTrace();
    } catch (InvalidAlgorithmParameterException e) {
      e.printStackTrace();
      Log.e(TAG, "无效的矢量key");
    } catch (InvalidKeyException e) {
      e.printStackTrace();
      Log.e(TAG, "无效的key");
    }

    String result = null;
    if (decodedData == null) {
      return null;
    }
    try {
      result = new String(decodedData, CHARSET);
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
      Log.e(TAG, "无法把解密后的字符数组转化为" + CHARSET + "字符串");
    }

    return result;
  }
Exemplo n.º 14
0
 @Test
 public void decodeEmpty() {
   assertEquals(Base64Util.decode("").length, 0);
 }
Exemplo n.º 15
0
  /**
   * Handles a submit request from a foreign wave remote. Sends it to the wave server, sets up a
   * callback to send the response.
   *
   * @param request the submit request
   * @param responseCallback the callback to send the response back
   */
  void processSubmitRequest(final IQ request, final PacketCallback responseCallback) {
    Element item = null, submitRequest = null, deltaElement = null;
    Element pubsubRequest = request.getElement().element("pubsub");
    // TODO: check for correct elements.
    Element publish = pubsubRequest.element("publish");
    if (publish != null) {
      item = publish.element("item");
      if (item != null) {
        submitRequest = item.element("submit-request");
        if (submitRequest != null) {
          deltaElement = submitRequest.element("delta");
        }
      }
    }
    if (publish == null
        || item == null
        || submitRequest == null
        || deltaElement == null
        || deltaElement.attribute("wavelet-name") == null
        || deltaElement.getText() == null) {
      responseCallback.error(FederationErrors.badRequest("Malformed submit request"));
      return;
    }

    final WaveletName waveletName;
    try {
      waveletName =
          XmppUtil.waveletNameCodec.uriToWaveletName(deltaElement.attributeValue("wavelet-name"));
    } catch (EncodingException e) {
      responseCallback.error(
          FederationErrors.badRequest(
              "Malformed wavelet name: " + deltaElement.attributeValue("wavelet-name")));
      return;
    }

    final ProtocolSignedDelta delta;
    try {
      delta = ProtocolSignedDelta.parseFrom(Base64Util.decode(deltaElement.getText()));
    } catch (InvalidProtocolBufferException e) {
      responseCallback.error(
          FederationErrors.badRequest("Malformed delta, not a valid protocol buffer"));
      return;
    }

    // Construct a submit result listener inline.
    WaveletFederationProvider.SubmitResultListener listener =
        new WaveletFederationProvider.SubmitResultListener() {
          @Override
          public void onFailure(FederationError error) {
            responseCallback.error(error);
          }

          @Override
          public void onSuccess(int operations, ProtocolHashedVersion version, long timestamp) {
            IQ response = IQ.createResultIQ(request);

            Element pubsub = response.setChildElement("pubsub", XmppNamespace.NAMESPACE_PUBSUB);
            Element submitResponse =
                pubsub
                    .addElement("publish")
                    .addElement("item")
                    .addElement("submit-response", XmppNamespace.NAMESPACE_WAVE_SERVER);

            submitResponse.addAttribute("application-timestamp", String.valueOf(timestamp));
            submitResponse.addAttribute("operations-applied", String.valueOf(operations));

            Element hashedVersion = submitResponse.addElement("hashed-version");
            hashedVersion.addAttribute("history-hash", Base64Util.encode(version.getHistoryHash()));
            hashedVersion.addAttribute("version", String.valueOf(version.getVersion()));

            responseCallback.run(response);
          }
        };

    // Hand off the submit request to the wavelet provider.
    waveletProvider.submitRequest(waveletName, delta, listener);
  }
Exemplo n.º 16
0
 public static String down(String imgURL) throws Exception {
   byte[] streamToByte = streamToByte(new URL(imgURL).openStream());
   return Base64Util.encode(streamToByte);
 }
Exemplo n.º 17
0
  /**
   * Reads a get signer request off the wire, sends it to the WS with a new callback for returning
   * the response.
   *
   * @param request the get signer request
   * @param responseCallback the callback to send the response back
   */
  void processGetSignerRequest(final IQ request, final PacketCallback responseCallback) {
    Element items = request.getChildElement().element("items");
    Element signerRequest = items != null ? items.element("signer-request") : null;

    if (items == null
        || signerRequest == null
        || signerRequest.attributeValue("wavelet-name") == null
        || signerRequest.attributeValue("signer-id") == null
        || signerRequest.attributeValue("version") == null
        || signerRequest.attributeValue("history-hash") == null) {
      manager.sendErrorResponse(request, FederationErrors.badRequest("Malformed signer request"));
      return;
    }

    final ByteString signerId;
    try {
      signerId = Base64Util.decode(signerRequest.attributeValue("signer-id"));
    } catch (IllegalArgumentException e) {
      responseCallback.error(FederationErrors.badRequest("Malformed signer ID"));
      return;
    }

    final ProtocolHashedVersion deltaEndVersion;
    try {
      deltaEndVersion =
          parseFromUnsafe(
              signerRequest.attributeValue("version"),
              signerRequest.attributeValue("history-hash"));
    } catch (IllegalArgumentException e) {
      responseCallback.error(FederationErrors.badRequest("Invalid hashed version"));
      return;
    }

    final WaveletName waveletName;
    try {
      waveletName =
          XmppUtil.waveletNameCodec.uriToWaveletName(signerRequest.attributeValue("wavelet-name"));
    } catch (EncodingException e) {
      responseCallback.error(FederationErrors.badRequest("Malformed wavelet name"));
      return;
    }

    WaveletFederationProvider.DeltaSignerInfoResponseListener listener =
        new WaveletFederationProvider.DeltaSignerInfoResponseListener() {
          @Override
          public void onFailure(FederationError error) {
            responseCallback.error(error);
          }

          @Override
          public void onSuccess(ProtocolSignerInfo signerInfo) {
            IQ response = IQ.createResultIQ(request);

            Element pubsub = response.setChildElement("pubsub", XmppNamespace.NAMESPACE_PUBSUB);
            Element items = pubsub.addElement("items");
            XmppUtil.protocolSignerInfoToXml(signerInfo, items);

            responseCallback.run(response);
          }
        };

    waveletProvider.getDeltaSignerInfo(signerId, waveletName, deltaEndVersion, listener);
  }
Exemplo n.º 18
0
 @Test(expectedExceptions = IllegalArgumentException.class)
 public void decodeNull() {
   Base64Util.decode(null);
 }
Exemplo n.º 19
0
 @Test
 public void testDecodeBadBase64() {
   final String base64 = "ABCDEFG@@@\u3000\n\n@@..=";
   assertNull(Base64Util.decode(base64));
 }
Exemplo n.º 20
0
  public static String encryptHashDocument(byte[] data) throws Exception {
    String encPwd = null;
    String passwordToGenKey = "IUSER0";
    byte[] buffer;

    Security.addProvider(new BouncyCastleProvider());

    MessageDigest gen = MessageDigest.getInstance("SHA-256", "BC");

    gen.update(data, 0, data.length);
    buffer = gen.digest();
    // ////////////////////////
    String buffer1 = Base64Util.encode(buffer);
    // ///////////////////////
    // Obtener el texto que va a dar el hash inicial
    byte buf[] = passwordToGenKey.getBytes("ISO-8859-1");

    // Obtener el hash
    MessageDigest md = MessageDigest.getInstance("MD5", "BC");

    md.update(buf);
    byte hash[] = md.digest();

    // Aunque no lo diga en ninguna parte, el cryptoapi usa una clave de 128
    // bits con todo ceros
    // menos los 5 primeros bytes para cifrar....
    byte newHash[] = {
      (byte) hash[0],
      (byte) hash[1],
      (byte) hash[2],
      (byte) hash[3],
      (byte) hash[4],
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00,
      (byte) 0x00
    };

    // Obtener la key basada en ese hash
    SecretKeySpec key = new SecretKeySpec(newHash, "RC4");

    // Obtener el objeto Cipher e inicializarlo con la key
    Cipher cipher = Cipher.getInstance("RC4", "BC");
    cipher.init(Cipher.ENCRYPT_MODE, key);

    // cifrar
    // byte bufCipher[] = cipher.doFinal(buffer);
    // ///////////////////////////////
    byte bufCipher[] = cipher.doFinal(buffer1.getBytes());
    // ///////////////////////////////
    encPwd = Base64Util.encode(bufCipher);

    return encPwd;
  }
Exemplo n.º 21
0
 @Test(expectedExceptions = IllegalArgumentException.class)
 public void decodeToSmall() {
   assertEquals(Base64Util.decode("abc").length, 0);
 }