[英]Android: Encrypt a string with AES 256bit Encryption with iv and secret key
[英]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.