簡體   English   中英

Android AES加密密鑰

[英]Android AES encryption secret key

我正在開發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"));

你能告訴我什么是錯的,謝謝。

您沒有將十六進制轉換為二進制,您獲得的字符的二進制文件不是十六進制編碼的值。

謝謝zaph,它解決了我的問題

我在代碼中添加了這兩行:

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

函數stringhextobyte允許我將我的十六進制字符串轉換為字節數組,我得到了所需的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM