私はAES ECB、 を使用してキーのMD5ハッシュを暗号化し、その後それを解読しようとすると、私は切り抜いた結果を得る:前AESの暗号化と復号化、データの損失
を:>•LY†lrœËGQ2¶ª€後
:0|t < D)¥§> BがW
iは暗号化と復号化に使用するコードは、次のとおり
public class AES {
private String a= "AES/ECB/NoPadding";
private byte[] key;
Cipher c;
public AES(byte [] key) throws NoSuchAlgorithmException, NoSuchPaddingException{
this.key = key;
c = Cipher.getInstance(a);
}
public String encrypt(byte[] Data) throws Exception{
Key k = new SecretKeySpec(key, "AES");
c.init(Cipher.ENCRYPT_MODE, k);
byte[] encoded = c.doFinal(Data);
String encrypted= new String(encoded);
return encrypted;
}
public String decrypt(byte[] v) throws Exception{
Key k = new SecretKeySpec(key, "AES");
if(v.length%16!=0)
return null;
c.init(Cipher.DECRYPT_MODE, k);
byte[] decv = c.doFinal(v);
String decrypted = new String(decv);
return decrypted;
}
}
この操作は情報を失います: '暗号化された文字列=新しい文字列(符号化された);'。そのようなテキストとして任意のバイナリデータをエンコードしようとしないでください。 base64または16進数を使用します。 –
ありがとうございます!それは損失をもたらす行だった –