本人一直在学 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 了,然后按照网上的说法解决还是不行。
拜托了!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.