本人一直在学 python,而这几天反编译需要读一些 java 代码实在是读不来……
遇到的是下面的这段代码:
import android.os.Build.VERSION;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class a
{
public static String a(String paramString)
{
return new String(a(a("JUSFOUN".getBytes()), b(paramString)));
}
protected static byte[] a(byte[] paramArrayOfByte)
{
KeyGenerator localKeyGenerator = KeyGenerator.getInstance("AES");
if (Build.VERSION.SDK_INT >= 17) {}
for (SecureRandom localSecureRandom = SecureRandom.getInstance("SHA1PRNG", "Crypto");; localSecureRandom = SecureRandom.getInstance("SHA1PRNG"))
{
localSecureRandom.setSeed(paramArrayOfByte);
localKeyGenerator.init(256, localSecureRandom);
return localKeyGenerator.generateKey().getEncoded();
}
}
protected static byte[] a(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2)
{
paramArrayOfByte1 = new SecretKeySpec(paramArrayOfByte1, "AES");
Cipher localCipher = Cipher.getInstance("AES");
localCipher.init(2, paramArrayOfByte1);
return localCipher.doFinal(paramArrayOfByte2);
}
protected static byte[] b(String paramString)
{
int j = paramString.length() / 2;
byte[] arrayOfByte = new byte[j];
int i = 0;
while (i < j)
{
arrayOfByte[i] = Integer.valueOf(paramString.substring(i * 2, i * 2 + 2), 16).byteValue();
i += 1;
}
return arrayOfByte;
}
}
大概知道是在加密解密,但实在是对 java 这块不熟悉。
麻烦哪位大神帮忙大致解读一下这篇代码,然后帮忙跑一下 a("F8171AFB57B7B680944446E8F5741F7C")的结果?
自己跑的时候,java 会报错,说没有 Crypto 这个 Provider 了,然后按照网上的说法解决还是不行。
拜托了!
1
linyinma 2018-03-08 15:18:20 +08:00
你怎么跑的啊? 这是 Android Java 额
|
3
linyinma 2018-03-08 15:54:55 +08:00
@DraymondG http://m635674608.iteye.com/blog/1844777 这个 blog 能回答为什么出现没有 Provider,知道问题原因,自己然后找解决办法了
|