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

如何在Clojure中访问argon-jvm库的Argon2id枚举实现哈希?

在Clojure中访问Argon2-jvm的Argon2id枚举值

别担心,这个问题其实很好解决!在Clojure里访问Java枚举的逻辑和Java本身一致,只是语法上有个小细节需要注意。

核心解决方法

你已经正确导入了Argon2Factory类,现在要访问嵌套的Argon2Types枚举里的Argon2id常量,只需要记住Clojure里的两个规则:

  • 用$代替Java中的.来引用嵌套类/枚举类
  • 用/来访问枚举类里的常量值

所以对应的枚举常量引用就是:
de.mkammerer.argon2.Argon2Factory$Argon2Types/Argon2id

完整示例代码

下面是创建Argon2id实例并进行哈希、验证的完整代码:

;; 导入必要的类
(import 'de.mkammerer.argon2.Argon2Factory)

;; 创建使用Argon2id算法的实例
(def argon2-instance (Argon2Factory/create de.mkammerer.argon2.Argon2Factory$Argon2Types/Argon2id))

;; 哈希密码(参数分别是迭代次数、内存大小、并行度、明文密码)
(def hashed-pw (.hash argon2-instance 10 65536 1 "my-secret-password"))

;; 验证密码是否匹配
(.verify argon2-instance hashed-pw "my-secret-password") ; 返回true
(.verify argon2-instance hashed-pw "wrong-password") ; 返回false

优化代码可读性

如果觉得类名太长,可以给嵌套枚举类起别名,让代码更简洁:

(import '[de.mkammerer.argon2 Argon2Factory]
        '[de.mkammerer.argon2.Argon2Factory$Argon2Types :as Argon2Types])

;; 现在可以直接用别名访问枚举常量
(def argon2-instance (Argon2Factory/create Argon2Types/Argon2id))

这样写出来的代码既清晰又符合Clojure的风格,完全可以满足你切换到Argon2id算法的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:27:29