[英]Convert Hex string to Byte Array for RSA Decryption
RSA加密后,我有一个十六进制字符串。 当我将其转换为byte []时,RSA解密给出javax.crypto.BadPaddingException:块类型不匹配:0
我正在使用此方法进行转换(在堆栈溢出本身上获得了它)
public static byte[] hexStringToByteArray(String data) {
int k = 0;
byte[] results = new byte[data.length() / 2];
for (int i = 0; i < data.length();) {
results[k] = (byte) (Character.digit(data.charAt(i++), 16) << 4);
results[k] += (byte) (Character.digit(data.charAt(i++), 16));
k++;
}
return results;
}
有任何建议请。
加密方法要求输入为固定长度。 您将必须在所需的长度上添加填充,以免发生此异常。 此大小取决于密钥大小。
编辑:您的data
迭代中还有一个潜在的错误:如果其长度不能被二整除,则第二个i++
将导致IndexOutOfBoundsException
。 最好在for
循环中将i
递增2,并在访问数据时使用[i]
和[i+1]
:
for (int i = 0; i + 1 < data.length(); i += 2, k++)
{
results[k] = (byte) (Character.digit(data.charAt(i), 16) << 4);
results[k] += (byte) (Character.digit(data.charAt(i + 1), 16));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.