我们有一些JSON文件存在于我们内部网络中的文件系统上,这些文件由Ruby编写,并由Clojure (还有Ruby)读取。我们想加密他们以增加他们的安全性。我们在Ruby项目中使用了AES 256 CBC,用于其他需要对称加密的东西,所以我们想使用它。但是,这一次,加密将需要在Clojure应用程序中解密。在Ruby中表示的加密输出(使用它作为指南:OpenSSL::密码)看起来如下:“a\x96\xECLI\xBC%\xC4@{xBD\x99%\xA1\x84\x84\x84”,并将其放入Clojure中,会产生一堆“语法错误.不受支持的转义字符:\x”“我试着使每个"\”a“\\”,但随后使用Clojure的库“巴迪-核心”和:erc256-cbc-hmac-sha-sha512作为加密算法的结果:
Execution error (AssertionError) at buddy.core.crypto/eval1558$fn (crypto.clj:478).
Assert failed: (keylength? key 64)即使密钥/iv在Ruby中用于加密字符串时也是很长的。
总括而言:
发布于 2020-02-13 19:16:32
Ruby不是有效的Java (即\x不是有效的转义字符),允许的Java转义字符在这里:https://docs.oracle.com/javase/specs/jls/se13/html/jls-3.html#jls-EscapeSequence
我不确定Ruby字符串在默认情况下是否是unicode,所以这有点棘手。最安全的选择是将加密结果转换为BASE64并使用它。
https://stackoverflow.com/questions/60214469
复制相似问题