Android中DatatypeConverter的替代方法

我试图在Android中实现算法AES 128,但是它不起作用,问题是 import javax.xml.bind.DatatypeConverter;

DatatypeConverter.parseHexBinary(key)

DatatypeConverter.printBase64Binary(finalData)

是否存在替代方案?

private static final String ALGORIT = "AES";

public static String encryptHackro(String plaintext, String key)

throws NoSuchAlgorithmException, NoSuchPaddingException,

InvalidKeyException, IllegalBlockSizeException,

BadPaddingException, IOException, DecoderException {

byte[] raw = DatatypeConverter.parseHexBinary(key);

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

Cipher cipher = Cipher.getInstance(ALGORITMO);

cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

byte[] cipherText = cipher.doFinal(plaintext.getBytes(""));

byte[] iv = cipher.getIV();

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

outputStream.write(iv);

outputStream.write(cipherText);

byte[] finalData = outputStream.toByteArray();

String encodedFinalData = DatatypeConverter.printBase64Binary(finalData);

return encodedFinalData;

}

我看到了其他答案,但是无法实现解决方案。

回答:

我用解决了我的问题

compile 'commons-codec:commons-codec:1.3'

我将android.util.Base64用于Android

/

DatatypeConverter.parseHexBinary 

org.apache.commons.codec.binary.Hex.decodeHex(key.toCharArray());

DatatypeConverter.printBase64Binary(finalData);

android.util.Base64.encodeToString(finalData, 16)

DatatypeConverter.parseBase64Binary(encodedInitialData);

org.apache.commons.codec.binary.Hex.decodeHex(key.toCharArray());

以上是 Android中DatatypeConverter的替代方法 的全部内容, 来源链接: utcz.com/qa/433157.html

回到顶部