一段关于加密解密的 Java 代码块,求运行结果和大致解释!

2018-03-07 12:03:03 +08:00
 DraymondG

本人一直在学 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 了,然后按照网上的说法解决还是不行。

拜托了!

1239 次点击
所在节点    问与答
3 条回复
linyinma
2018-03-08 15:18:20 +08:00
你怎么跑的啊? 这是 Android Java 额
DraymondG
2018-03-08 15:39:28 +08:00
@linyinma 但里面只有一个版本判断需要 android 库吧,我把它改成静态参数了,还是报错。
linyinma
2018-03-08 15:54:55 +08:00
@DraymondG http://m635674608.iteye.com/blog/1844777 这个 blog 能回答为什么出现没有 Provider,知道问题原因,自己然后找解决办法了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/435698

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX