You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter获取SHA-1/SHA-256密钥时遇HmacPBESHA256算法异常

解决Flutter环境下获取SHA密钥时的HmacPBESHA256算法缺失问题

问题场景

在Flutter环境中执行以下命令获取SHA-1和SHA-256密钥:

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检测结果:

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)
    ! Warning: `dart` on your path resolves to /usr/lib/dart/bin/dart, which is not inside your
      current Flutter SDK checkout at /home/vrs/flutter. Consider adding /home/vrs/flutter/bin to
      the front of your path.
[✓] 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.77.3)
[✓] Connected device (2 available)
[✓] HTTP Host Availability

! Doctor found issues in 1 category.

解决方案

1. 直接调用Android Studio内置的keytool

Android Studio自带的JDK包含完整的加密算法支持,无需额外配置:

  • 找到Android Studio的JDK路径,Deepin系统下通常为~/AndroidStudio/jbr/bin/
  • 执行以下命令(输入默认密码android即可):
~/AndroidStudio/jbr/bin/keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

2. 将Android Studio JDK设置为系统默认

如果不想每次指定路径,可修改系统环境变量:

  • 编辑~/.bashrc或~/.zshrc配置文件,添加:
export JAVA_HOME=~/AndroidStudio/jbr
export PATH=$JAVA_HOME/bin:$PATH
  • 执行source ~/.bashrc(对应自己的shell配置文件)使变更生效,之后直接运行原keytool命令即可。

3. 修复系统JDK的加密算法缺失(可选)

若坚持使用系统JDK,需确保安装完整版本:

  • 检查当前JDK版本,避免使用精简版OpenJDK
  • 安装完整的OpenJDK包:
sudo apt install openjdk-11-jre-headless

内容的提问来源于stack exchange,提问作者Vinayak Sutar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:22:58