Skip to content

Commit b5f563a

Browse files
committed
...
1 parent 4143a92 commit b5f563a

File tree

4 files changed

+52
-13
lines changed

4 files changed

+52
-13
lines changed

androidstringobfuscator/androidstringobfuscator.iml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,20 @@
6363
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
6464
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
6565
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
66-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
67-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
68-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
69-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
70-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
71-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
72-
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
7366
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
7467
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
7568
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
7669
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
7770
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
7871
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
7972
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
73+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
74+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
75+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
76+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
77+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
78+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
79+
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
8080
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
8181
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
8282
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />

androidstringobfuscator/src/main/java/com/efraespada/androidstringobfuscator/AndroidStringObfuscator.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,17 @@
1111
import java.io.UnsupportedEncodingException;
1212
import java.security.MessageDigest;
1313
import java.security.NoSuchAlgorithmException;
14+
import java.security.SecureRandom;
1415
import java.security.cert.CertificateEncodingException;
1516
import java.security.cert.CertificateException;
1617
import java.security.cert.CertificateFactory;
1718
import java.security.cert.X509Certificate;
1819
import java.util.Arrays;
20+
import java.util.Random;
1921

2022
import javax.crypto.Cipher;
2123
import javax.crypto.SecretKey;
24+
import javax.crypto.spec.IvParameterSpec;
2225
import javax.crypto.spec.SecretKeySpec;
2326

2427
/**
@@ -27,11 +30,13 @@
2730

2831
public class AndroidStringObfuscator {
2932

33+
private static final int LENGTH = 16;
3034
private static final String CODIFICATION = "UTF-8";
31-
private static final String TRANSFORMATION = "AES/ECB/PKCS5Padding";
35+
private static final String TRANSFORMATION = "AES/CBC/PKCS5Padding";
3236
private static final char[] hexArray = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
3337
private static final String TAG = AndroidStringObfuscator.class.getSimpleName();
3438
private static Context context;
39+
private static byte[] iv = new byte[0];
3540

3641
public static void init(Context c) {
3742
context = c;
@@ -100,19 +105,21 @@ private static SecretKey generateKey(String key) throws NoSuchAlgorithmException
100105
}
101106

102107
private static String encrypt(String message, String key) throws Exception {
108+
buildIvParam(message, key);
103109
byte[] data = message.getBytes(CODIFICATION);
104110
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
105-
cipher.init(Cipher.ENCRYPT_MODE, generateKey(key));
111+
cipher.init(Cipher.ENCRYPT_MODE, generateKey(key), new IvParameterSpec(iv));
106112
byte[] encryptData = cipher.doFinal(data);
107113

108114
return byteArrayToHexString(encryptData);
109115
}
110116

111117
private static String decrypt(String message, String key) throws Exception {
118+
buildIvParam(message, key);
112119
byte[] tmp = hexStringToByteArray(message);
113120
SecretKeySpec spec = new SecretKeySpec(generateKey(key).getEncoded(), "AES");
114121
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
115-
cipher.init(Cipher.DECRYPT_MODE, spec);
122+
cipher.init(Cipher.DECRYPT_MODE, spec, new IvParameterSpec(iv));
116123

117124
String result = new String(cipher.doFinal(tmp), CODIFICATION);
118125
return result;
@@ -201,4 +208,23 @@ public static String decryptString(String value) {
201208
}
202209
return null;
203210
}
211+
212+
private static void buildIvParam(String message, String key) {
213+
if (iv.length == 0) {
214+
iv = new byte[LENGTH];
215+
int index = randomNumber(key.length());
216+
System.arraycopy(key.getBytes(), index, iv, 0, LENGTH);
217+
218+
try {
219+
return decrypt(message, hash);
220+
} catch (Exception e) {
221+
e.printStackTrace();
222+
}
223+
}
224+
}
225+
226+
private static int randomNumber(int length){
227+
int value = new Random().nextInt(length) + length - 2 - length;
228+
return value;
229+
}
204230
}

sample/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ dependencies {
3737
})
3838
compile 'com.android.support:appcompat-v7:25.2.0'
3939
testCompile 'junit:junit:4.12'
40-
// compile project(path: ':androidstringobfuscator')
41-
compile 'efraespada:androidstringobfuscator:0.4.1'
40+
compile project(path: ':androidstringobfuscator')
41+
//compile 'efraespada:androidstringobfuscator:0.4.1'
4242

4343
}
4444

sample/sample.iml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,27 @@
7676
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
7777
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
7878
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
79+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
7980
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
81+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
8082
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
8183
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
84+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
85+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
8286
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
87+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
88+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
89+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
90+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
8391
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
92+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
8493
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
94+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
8595
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
96+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
97+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
8698
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
99+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
87100
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
88101
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
89102
</content>
@@ -98,7 +111,6 @@
98111
<orderEntry type="library" exported="" scope="TEST" name="javax.annotation-api-1.2" level="project" />
99112
<orderEntry type="library" exported="" scope="TEST" name="javax.inject-1" level="project" />
100113
<orderEntry type="library" exported="" scope="TEST" name="hamcrest-integration-1.3" level="project" />
101-
<orderEntry type="library" exported="" name="androidstringobfuscator-0.4.1" level="project" />
102114
<orderEntry type="library" exported="" name="support-v4-25.2.0" level="project" />
103115
<orderEntry type="library" exported="" name="support-compat-25.2.0" level="project" />
104116
<orderEntry type="library" exported="" scope="TEST" name="javawriter-2.1.1" level="project" />
@@ -113,5 +125,6 @@
113125
<orderEntry type="library" exported="" name="support-core-utils-25.2.0" level="project" />
114126
<orderEntry type="library" exported="" name="support-fragment-25.2.0" level="project" />
115127
<orderEntry type="library" exported="" name="animated-vector-drawable-25.2.0" level="project" />
128+
<orderEntry type="module" module-name="androidstringobfuscator" exported="" />
116129
</component>
117130
</module>

0 commit comments

Comments
 (0)