当前位置: 首页 > 知识库问答 >
问题:

解密字符串时出现数字格式异常

太叔睿
2023-03-14

我正试图通过使用以下方法来取消加密字符串,但遇到了异常。

我试图将我的加密字符串发送到下面的方法,但它不能得到Byte[],在将字符串转换为Byte[]时得到数字格式异常。

public static String decrypt(String seed, String encrypted) throws Exception {

   byte[] seedByte = seed.getBytes();

   System.arraycopy(seedByte, 0, key, 0, ((seedByte.length < 16) ? seedByte.length : 16));

   String base64 = new String(Base64.decode(encrypted, 0));

  byte[] rawKey = getRawKey(seedByte);

   byte[] enc = toByte(base64);

   byte[] result = decrypt(rawKey, enc);

   return new String(result);

  }
  public static byte[] toByte(String hexString) {

   int len = hexString.length() / 2;

   byte[] result = new byte[len];

   for (int i = 0; i < len; i++)

    result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2), 16).byteValue();

   return result;

  }
08-15 13:03:04.748: W/System.err(10013): java.lang.NumberFormatException: Invalid int: "@��"
08-15 13:03:04.748: W/System.err(10013):    at java.lang.Integer.invalidInt(Integer.java:138)
08-15 13:03:04.748: W/System.err(10013):    at java.lang.Integer.parse(Integer.java:375)
08-15 13:03:04.748: W/System.err(10013):    at java.lang.Integer.parseInt(Integer.java:366)
08-15 13:03:04.748: W/System.err(10013):    at java.lang.Integer.valueOf(Integer.java:510)
08-15 13:03:04.748: W/System.err(10013):    at com.example.aes.EncodeDecodeAES.toByte(EncodeDecodeAES.java:226)
08-15 13:03:04.748: W/System.err(10013):    at com.example.aes.EncodeDecodeAES.decrypt(EncodeDecodeAES.java:69)
08-15 13:03:04.748: W/System.err(10013):    at com.example.aes.MainActivity$1.run(MainActivity.java:94)

请建议。

共有1个答案

连时铭
2023-03-14

似乎您的十六进制字符串中有一些无效的字节。在将其放入字节数组之前,请尝试验证它。例如,执行以下操作:

    if(new Scanner(hexString.substring(2 * i, 2 * i + 2), 16).hasNextInt())
         result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2), 16).byteValue()    
 类似资料:
  • 我有一张这样的地图 我可以得到分数作为整数以及"NA",所以我映射类型为字符串,但在发布数据到索引我得到数字格式异常。 例如: 如果我将第一个数据发布为整数,后跟“NA”。我得到了这些例外。 检查日志文件时,我发现以下错误: [2016-08-29 15:19:01]elasticlog.警告:响应[{\"错误\":{\"root_cause类型\":\"mapper_parsing_except

  • 我有一个代表学生实体的字符串: 学生实体类是: 对于解析字符串,我使用以下代码: 响应1是一个httpresponse的主体,它代表我来自描述的字符串。 例外情况:

  • V1.1.1新增 <?php $string='1324123i412qewrwerqwe'; $string=sp_authcode($string);//解密字符串 echo $string;//输出解密后的字符串 ?>

  • 我正在尝试用Java编写RSA加密和解密类,用于客户端来回传递字符串的服务器。我为这些类编写了以下代码: 我有以下测试类代码: 然而,当我尝试运行测试类时,密钥生成和加密工作正常,但当我尝试解密时,会出现一个错误。错误是javax。加密。IllegalBlockSizeException:数据不能超过128字节,但我的数据肯定小于128字节。 我可以确认将公钥转换为字符串并返回相同的公钥。我也尝试

  • 我想在我的项目上使用RSA/AES文件加密。我用rsa做了一对私钥/公钥和一个AES密钥,然后用公钥加密AES密钥。最后用私有RSA密钥对AES加密密钥进行解密。

  • 所以,如果我有一个数字和一个字符串,我想让它占用一些预设空间,我如何使用String.format?例如,如果字符串应该包含40个字符,我写,但是如果我有一些数字应该包含在字符串之前的40个字符中呢?