簡體   English   中英

AES使用Base64加密

[英]AES using Base64 Encryption

我的目標是使用AES加密字符串我使用Base64進行加密,因為AES需要一個字節數組作為輸入。 此外,我希望正確存儲每個可能的Char(包括中文和德文符號)

    byte[] encryptedBytes = Base64.decodeBase64 ("some input");
System.out.println(new Base64().encodeToString(encryptedBytes));

我認為應該打印“一些輸入”。 而是打印“someinpu”。 我不可能使用sun.misc。*而是使用apache.commons.codec

有人知道出了什么問題嗎?

是 - “某些輸入”不是有效的base64編碼字符串。

base64的想法是將二進制數據編碼為文本 然后,您將該文本數據解碼為字節數組。 您不能只解碼任何任意文本,就像它是一個完整的base64消息一樣,你可以嘗試將mp3解碼為jpeg圖像。

加密字符串應該是這個過程:

  • 將字符串編碼為二進制數據,例如使用UTF-8( text.getBytes("UTF-8")
  • 使用AES加密二進制數據
  • 使用Base64對密文進行編碼以獲取文本

解密是一個問題:

  • 將base64文本解碼為二進制cyphertext
  • 解密密文以獲得二進制明文
  • 使用與上面第一步相同的編碼將二進制明文解碼為字符串,例如new String(bytes, "UTF-8")

您不能使用Base64將任意文本轉換為字節; 這不是它的設計目的。

相反,你應該使用UTF8:

byte[] plainTextBytes = inputString.getBytes("UTF8");

String output = new String(plainTextBytes, "UTF8");

暫無
暫無

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

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