Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.pubnub.api;
  
  
PubNub 3.1 Cryptography
 
 abstract class PubnubCryptoCore {
 
     byte[] buf = new byte[16]; // input buffer
     byte[] obuf = new byte[512]; // output buffer
     byte[] key = null;
     String IV = "0123456789012345";
     public static int blockSize = 16;
     String CIPHER_KEY;
 
     public PubnubCryptoCore(String CIPHER_KEY) {
         this. = CIPHER_KEY;
     }
     public PubnubCryptoCore(String CIPHER_KEYString initialization_vector) {
         if (initialization_vector != nullthis. = initialization_vector;
         this. = CIPHER_KEY;
     }
 
     public void InitCiphers() throws UnsupportedEncodingException {
 
          = new String(Hex.encode(sha256(this..getBytes("UTF-8"))),
                          "UTF-8").substring(0, 32).toLowerCase().getBytes("UTF-8");
 
                     new AESEngine()));
 
                     new AESEngine()));
 
         // create the IV parameter
         ParametersWithIV parameterIV = new ParametersWithIV(new KeyParameter(
                     ), .getBytes("UTF-8"));
 
         .init(trueparameterIV);
         .init(falseparameterIV);
     }
 
     public void ResetCiphers() {
         if ( != null) {
             .reset();
         }
         if ( != null) {
             .reset();
         }
     }
 
     public String encrypt(String inputthrows DataLengthException,
                 IllegalStateExceptionInvalidCipherTextException {
         try {
             InputStream st = new ByteArrayInputStream(input.getBytes("UTF-8"));
             ByteArrayOutputStream ou = new ByteArrayOutputStream();
             CBCEncryptOrDecrypt(stoutrue);
             String s = new String(Base64Encoder.encode(ou.toByteArray()));
             return s;
         } catch (IOException ex) {
             ex.printStackTrace();
         }
         return "NULL";
     }

    
Decrypt

Parameters:
cipher_text
Returns:
String
Throws:
java.lang.Exception
 
     public String decrypt(String cipher_textthrows DataLengthException,
 
         byte[] cipher = Base64Encoder.decode(cipher_text);
         InputStream st = new ByteArrayInputStream(cipher);
         ByteArrayOutputStream ou = new ByteArrayOutputStream();
        CBCEncryptOrDecrypt(stoufalse);
        return new String(ou.toByteArray());
    }
    public void CBCEncryptOrDecrypt(InputStream inOutputStream out,
                                    boolean encryptthrows DataLengthExceptionIllegalStateException,
                InvalidCipherTextExceptionIOException {
        if ( == null ||  == null) {
            InitCiphers();
        }
        PaddedBufferedBlockCipher cipher = (encrypt) ? 
                                           : ;
        int noBytesRead = 0; // number of bytes read from input
        int noBytesProcessed = 0; // number of bytes processed
        while ((noBytesRead = in.read()) >= 0) {
            noBytesProcessed = cipher
                               .processBytes(, 0, noBytesRead, 0);
            out.write(, 0, noBytesProcessed);
        }
        noBytesProcessed = cipher.doFinal(, 0);
        out.write(, 0, noBytesProcessed);
        out.flush();
        in.close();
        out.close();
    }
    public static byte[] hexStringToByteArray(String s) {
        int len = s.length();
        byte[] data = new byte[len / 2];
        for (int i = 0; i < leni += 2) {
            data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character
                                  .digit(s.charAt(i + 1), 16));
        }
        return data;
    }

    
Get MD5

Parameters:
input
Returns:
byte[]
    public static byte[] md5(String input) {
        MD5Digest digest = new MD5Digest();
        byte[] bytes = input.getBytes();
        digest.update(bytes, 0, bytes.length);
        byte[] md5 = new byte[digest.getDigestSize()];
        digest.doFinal(md5, 0);
        StringBuffer hex = new StringBuffer(md5.length * 2);
        for (int i = 0; i < md5.lengthi++) {
            byte b = md5[i];
            if ((b & 0xFF) < 0x10) {
                hex.append("0");
            }
            hex.append(Integer.toHexString(b & 0xFF));
        }
        return hexStringToByteArray(hex.toString());
    }

    
Get SHA256

Parameters:
input
Returns:
byte[]
    public static byte[] sha256(byte[] input) {
        Digest digest = new SHA256Digest();
        byte[] resBuf = new byte[digest.getDigestSize()];
        byte[] bytes = input;
        digest.update(bytes, 0, bytes.length);
        digest.doFinal(resBuf, 0);
        return resBuf;
    }
New to GrepCode? Check out our FAQ X