为了账号安全,请及时绑定邮箱和手机立即绑定

不兼容的类型;必需并找到。但是找到的是必填类型

不兼容的类型;必需并找到。但是找到的是必填类型

白猪掌柜的 2021-04-02 14:18:11
我收到错误消息“不兼容的类型。必需:字节[]。找到:java.lang.string我已经尝试从发现的不兼容类型和要求相同的类型中解决方案,这表明我必须初始化类型。我初始化了byte [],但仍然收到该错误public static byte[] hash(char[] password, byte[] salt) {    PBEKeySpec spec = new PBEKeySpec(password, salt, ITERATIONS, KEY_LENGTH);    Arrays.fill(password, Character.MIN_VALUE);    try {        SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");        byte [] hashedPass =  skf.generateSecret(spec).getEncoded();        return toHex(hashedPass);    } catch (NoSuchAlgorithmException | InvalidKeySpecException e) {        throw new AssertionError("Error while hashing a password: " + e.getMessage(), e);    } finally {        spec.clearPassword();    }}public static String toHex(byte[] Array){    BigInteger bi = new BigInteger(1, Array);    String hex = bi.toString(16);    int paddingLength = (Array.length *2) - hex.length();    if (paddingLength > 0){        return String.format("%0" + paddingLength +"d", 0) + hex;    } else {        return hex;    }}我在第7行出现错误:return toHex(hashedPass);
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

该方法hash(char[] password, byte[] salt)应返回abyte[]return toHex(hashedPass)返回不兼容的String。

更改方法的返回类型toHex(hashedPass)并返回byte[]或更改,

return toHex(hashedPass);

return toHex(hashedPass).getBytes();


查看完整回答
反对 回复 2021-04-14
  • 1 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信