繁体   English   中英

将十六进制字符串转换为字节数组以进行RSA解密

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM