当我从repl运行时:
(def md (MessageDigest/getInstance "SHA-1"))
(. md update (into-array [(byte 1) (byte 2) (byte 3)]))
我明白了:
No matching method found: update for class java.security.MessageDigest$Delegate
MessageDigest的Java 6文档显示:
update(byte[] input)
Updates the digest using the specified array of bytes.
和(class (into-array [(byte 1) (byte 2) (byte 3)]))
的类是
[Ljava.lang.Byte;
我在更新的定义中遗漏了什么?
不是创造我认为我的班级?
没有传递它我认为我的类型?
答案 0 :(得分:3)
因为您正在调用MessageDigest中未定义的update(Byte [])。您需要将其转换为原始数组。
你可以这样做,
(defn updateBytes [#^MessageDigest md, #^bytes data]
(.update md data))
答案 1 :(得分:2)
尝试:
(. md update (into-array Byte/TYPE [(byte 1) (byte 2) (byte 3)]))