从Flutter APK提取SHA密钥时出现错误求助
获取Firebase SHA密钥时遇到HmacPBESHA256算法不可用错误
问题详情
为上传至Firebase获取SHA密钥,执行命令:
keytool -list -v \ -alias androiddebugkey -keystore ~/.android/debug.keystore
出现以下异常:
keytool error: java.io.IOException: Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available java.io.IOException: Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2167) at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:222) at java.base/java.security.KeyStore.load(KeyStore.java:1479) at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1058) at java.base/sun.security.tools.keytool.Main.run(Main.java:405) at java.base/sun.security.tools.keytool.Main.main(Main.java:398) Caused by: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available at java.base/javax.crypto.Mac.getInstance(Mac.java:191) at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2145) ... 5 more
Flutter环境检测无异常:
Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 3.7.12, on Deepin 20.9 5.15.77-amd64-desktop, locale en_US.UTF-8) [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2) [✓] Chrome - develop for the web [✓] Linux toolchain - develop for Linux desktop [✓] Android Studio (version 2022.2) [✓] IntelliJ IDEA Community Edition (version 2023.1) [✓] VS Code (version 1.78.2) [✓] Connected device (2 available) [✓] HTTP Host Availability • No issues found!
操作系统:Linux Deepin 20
解决方法
- 使用Android SDK自带的JDK执行命令:
直接调用Android SDK目录下的keytool(路径通常为~/Android/Sdk/jre/bin/keytool),规避系统默认JDK的兼容性问题:~/Android/Sdk/jre/bin/keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore - 切换到OpenJDK 8版本:
若系统默认是高版本OpenJDK,安装并切换到OpenJDK 8:
在弹出的选项中选择OpenJDK 8对应的条目,之后重新执行原始keytool命令。sudo apt-get install openjdk-8-jdk sudo update-alternatives --config java sudo update-alternatives --config keytool - 重新生成debug keystore:
若旧keystore存在兼容性问题,重新生成一个:
生成完成后再次执行获取SHA密钥的命令。keytool -genkey -v -keystore ~/.android/debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
内容的提问来源于stack exchange,提问作者Vinayak Sutar
相关产品推荐
相关产品推荐

