다음 방법을 사용하여 암호화 된 문자열의 암호를 해독하려하지만 예외로 인해 고정되어 있습니다.숫자 형식 문자열을 해독하는 중 예외가 발생했습니다.
암호화 된 문자열을 아래 메서드로 보내려고하지만 String을 byte []로 변환하는 동안 Number Format Exception을 가져올 수 없습니다.
내 암호 해독 방법은 다음과 같습니다
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);
}
내 toByte입니다 (String) 메소드 :
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)
난 정말 이해 didnt는 이 오류가 발생했습니다.
좋습니다.
result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2), 16).byteValue();
당신은 4 바이트 정수를 고려 (이 방법을 시도 할 수 있습니다 당신이이 개 자리에 hexString을 분할 할 것을 :
여기에 IDE가 없지만 charset 문제 일 수 있습니까? 내가 여기 내 hexString를 사용할 필요가 sun.misc.BASE64Decoder sun.misc.BASE64Encoder – DennisH
나는이 패키지를 디코딩/인코딩하려고 – koti
당신이 나에게 어떤 제안을 do.can 무엇을 몰랐어요 나는 내 hexString을 사용한다 – DennisH