public String obfuscate(String original, String key) {
        if (original == null) {
            return null;
        }
        try {
            // Header is appended as an integrity check
            return Base64.encode(mEncryptor.doFinal((header + key + original).getBytes(UTF8)));
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException("Invalid environment", e);
        } catch (GeneralSecurityException e) {
            throw new RuntimeException("Invalid environment", e);
        }
    }
@param salt an array of random bytes to use for each (un)obfuscation
@param applicationId application identifier, e.g. the package name
@param deviceId device identifier. Use as many sources as possible to
   create this unique identifier.
android/android_framework/base/src/main/java/com/google/android/vending/licensing/AESObfuscator.java