代码如下:
(ql:quickload :ironclad)
(ql:quickload :crypto-shortcuts)
(use-package :ironclad)
(defparameter str "Hello World!")
(defparameter message (ascii-string-to-byte-array str))
(defparameter key "1234")
(let ((cipher (make-cipher :arcfour
                           :key (ascii-string-to-byte-array key)
                           :mode :stream
                           :initialization-vector (make-random-salt)))
      (text
       (ascii-string-to-byte-array
        (cryptos:to-base64 (copy-seq message)))))
  ;; #(83 71 86 115 98 71 56 103 86 50 57 121 98 71 81 104)
  (format t "~a~%" text)
  (encrypt-in-place cipher text)
  ;; #(86 14 39 220 145 171 63 106 89 41 57 41 135 32 85 188)
  ;; "Vg4n3JGrP2pZKTkphyBVvA=="
  (format t "~a~%" text)
  (format t "~a~%" (cryptos:to-base64 text))
  (decrypt-in-place cipher text)
  ;; ?
  ;; #(83 71 86 115 98 71 56 103 86 50 57 121 98 71 81 104)
  (format t "~a~%" text))
我的代码有什么问题?
after (decrypt-in-place cipher text),text应该和原来的一样,但事实并非如此。为什么?
谁能帮忙?
以下是加密快捷方式版本:
(cryptos:decrypt (cryptos:encrypt str
                              key                                  
                              :cipher :arcfour
                              :mode :stream)
             key
             :cipher :arcfour
             :mode :stream)
一切都好。