当前位置: 首页 > 面试题库 >

Android中DatatypeConverter的替代方法

钱俊楚
2023-03-14
问题内容

我试图在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());


 类似资料:
  • 允许我填充包含复选框和单选按钮的HTML表单的替代方法。 我已经设法使用eclipse中的HtmlUnit库将数据发送到html表单并检索页面(我已经发布了下面的Java代码)。 然而,当我将这些代码复制到我的Android项目中时,我发现Android不支持HtmlUnit库。 对于Android来说,HtmlUnit还有其他替代方案吗?另一种方法应该能够将文本、复选框、单选按钮填写到Html表

  • 我一直在通过Netbeans使用CodeNameOne设计一个应用程序,并遇到了一些问题,特别是“找不到符号”编译错误。经过进一步的研究,我发现这是由于CNO不支持某些库/杂项。 我想知道是否有其他方法可以使用以下库/执行任务: (从文件读取)导入java.io.file;符号:类文件位置:package java.io (抛出FileNotFoundException)导入java.io.Fil

  • 目前,Android的EditText在处理大量文本行(10000行)时速度非常慢。这种放缓似乎部分是由于EditText支持跨度,主要是由于EditText正在计算每行的宽度,这非常昂贵。EditText有什么更快的替代品,或者优化它以使其可用的方法吗? 编辑:方法跟踪如下:

  • 我想用逗号作为分隔符串联一个ArrayList。我找到了这个答案,说明在Java中使用是可能的。 无法解析方法“join(java.lang.String,java.lang.String,java.lang.String,java.lang.String, Android Studio是否有一个好的、简洁的替代方案(而不是使用for循环)?

  • 问题内容: 我从没想过会发生这种情况,但是遇到了我的第一个Java错误: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5003595 我几乎与错误(在Linux上为NFS)中描述的情况完全相同,并且我看到File.exists()没有返回正确的值(至少不是立即返回)。 所以我的问题是,这种检查文件是否存在的方法是否可以替代?如果可能的话,我

  • 问题内容: 在JavaScript中,不支持本机JSON的浏览器有哪些替代方案?谢谢 问题答案: 您应该使用该库。它是某些浏览器本地包含的标准的基础。 您可以在这里找到它起源的页面:https : //github.com/douglascrockford/JSON- js/blob/master/json2.js 该脚本会自动确保仅在尚不存在的情况下添加方法,因此在具有该方法的浏览器中不会存在危