Я пытаюсь сгенерировать MAC с помощью ISO9797 Alghrythm 3. Я делаю это в Clojure, но я предполагаю, что у меня больше проблемы с Java Вот. Я запускаю этот код:Java/Clojure BouncyCastle сообщает о неправильном размере ключа, но размер ключа правильный
(defn mac2 [key message]
(let [engine (org.bouncycastle.crypto.engines.DESedeEngine.)
mac (org.bouncycastle.crypto.macs.ISO9797Alg3Mac. engine)
bytes (byte-array (.getMacSize mac))
key (->bytes key)
msg (->bytes E-IFD)]
(prn key (count key))
(.init mac (org.bouncycastle.crypto.params.DESedeParameters. key))
(.update mac msg 0 (count msg))
(.doFinal mac bytes 0)
(->hex-string bytes)))
И получить этот вывод (исключение брошено (.init макинтош ...):
#<byte[] [[email protected]> 16
IllegalArgumentException key size must be 16 or 24 bytes. org.bouncycastle.crypto.engines.DESedeEngine.init (:-1)
Теперь вы видите, печать ргп IST положить кнопочная длина которого равна 16. Но BouncyCastle жалуется, что это не 16 или 24 (изменение ключа на клавишу с длиной 24 тоже не помогает)
Также, когда я запускаю этот код, нет проблемы :
(defn mac1 [key message]
(let [engine (org.bouncycastle.crypto.engines.DESedeEngine.)
mac (org.bouncycastle.crypto.macs.CMac. engine)
bytes (byte-array (.getMacSize mac))
msg (->bytes E-IFD)]
(.init mac (org.bouncycastle.crypto.params.DESedeParameters. (->bytes key)))
(.update mac msg 0 (count msg))
(.doFinal mac bytes 0)
(->hex-string bytes)))