Openssl Base64编码/解码问题

Openssl Base64编码/解码问题,openssl,hex,base64,ocaml,Openssl,Hex,Base64,Ocaml,我有两个函数可以使用openssl与base64进行转换: (* base64 encode *) let encode_base64 msg = let open_ssl_arg = "echo -n '" ^ msg ^ "' | openssl enc -base64" in let ic = Unix.open_process_in open_ssl_arg in let rec output s = try let new_line = input_li

我有两个函数可以使用openssl与base64进行转换:

 (* base64 encode *)
 let encode_base64 msg =
   let open_ssl_arg = "echo -n '" ^ msg ^ "' | openssl enc -base64" in
   let ic = Unix.open_process_in open_ssl_arg in
   let rec output s =
     try let new_line = input_line ic in output (s ^ new_line);
     with End_of_file -> s
   in
  Unix.close_process_in |> fun _ -> ();
  output ""

(* base64 decode *)
let decode_base64 msg =
  let open_ssl_arg = "echo -n '" ^ msg ^ "' | base64 -d" in
  let ic = Unix.open_process_in open_ssl_arg in
  let rec output s =
    try let new_line = input_line ic in output (s ^ new_line);
    with End_of_file -> s
  in
  Unix.close_process_in |> fun _ -> ();
  output ""
这些似乎很好用。我可以用以下方法测试它们:

 # decode_base64 @@ encode_base64 "HelloWorld";;
 - : string = "HelloWorld" 
作为我正在构建的API接口的一部分,我需要能够对密钥进行base64解码

当我使用API提供的密钥尝试相同的测试时,我收到以下消息:

 encode_base64 @@ decode_base64 secret_key;;
 /bin/sh: 1: Syntax error: Unterminated quoted string                            
 - : string = ""
我可以很好地解码密钥,但是当我将解码的密钥字符串放回encode_base64函数时,我收到了错误。我看不出我做错了什么,但我认为问题一定出在decode函数中,因为我在许多其他API接口中使用encode函数都没有问题


我也知道我的密钥不是问题所在,因为我可以用相同的密钥在python中很好地执行所有函数。这可能是Oct与十六进制字符串格式问题吗?

openssl正在使用嵌入的换行符每隔64个字符写入base64文本。这意味着您对
echo-n
内部
decode\u base64
的输入中有新行。这将为您提供“Unterminated quoted string”消息


无论如何,在OCaml中进行base64编码是一种疯狂的方式。退房

我不知道这个图书馆,谢谢你提供的信息。