Android AES加密密钥

时间:2016-12-01 13:58:49

标签: java android encryption key aes

我正在开发一款Android应用,我想用AES-128进行加密。 我使用十六进制密钥和文本。

我使用此网站:http://testprotect.com/appendix/AEScalc使用以下密钥计算AES加密:" c4dcc3c6ce0acaec4327b6098260b0be"我的加密文本是:" 6F4B1B252A5F0C3F2992E1A65E56E5B8" (十六进制)。

所以这个网站的结果给了我" 859499d0802de8cc6ba4f208da648a8f"这就是我想得到的结果。 http://hpics.li/d89105a

我在网上找到了一些代码,但很多人使用种子生成随机密钥,我想修复密钥。 实际上我使用下面的代码,我认为它是我需要的代码,但结果给了我D/resultdebug: 72adc67b6d11e1c5fb89ddf5faeb0e030686b91f8bfaf6c41335f08955343f87 它与我想要的网站结果不一样。

 String text16 = "6F4B1B252A5F0C3F2992E1A65E56E5B8";
    String secret16 = "c4dcc3c6ce0acaec4327b6098260b0be";

    SecretKeySpec sks = new SecretKeySpec(secret16.getBytes(),"AES");
    Cipher c = Cipher.getInstance("AES");

    c.init(Cipher.ENCRYPT_MODE, sks);
    c.update(text16.getBytes());
    byte[] ciphertext = c.doFinal();
    Log.d("resultdebug",new String(Hex.encode(ciphertext), "ASCII"));

你能告诉我出了什么问题,谢谢。

2 个答案:

答案 0 :(得分:0)

您没有将十六进制转换为二进制,您获得的字符的二进制文件不是十六进制编码的值。

答案 1 :(得分:0)

谢谢zaph,它解决了我的问题

我在代码中添加了这两行:

    byte[] text = stringhextobyte(text16);
    byte[] secret = stringhextobyte(secret16);

函数stringhextobyte允许我将我的十六进制字符串转换为字节数组,我得到了所需的结果。