我想通过URL查询字符串(例如:?secure_string = xxxxx)安全地从Elixir / Phoenix(Sever)向PHP(客户端)发送字符串。环境没有SSL,但他们可以提前共享私钥。所以我认为我可以通过加密安全地传送字符串,例如AES。
由于PHP具有openssl_decrypt(),因此它可以解密字符串,如下所示。 Elixir(或Erlang?)可以调用openssl_encrypt,而不是System.cmd(“/ usr / bin / openssl”)?还有其他(更好的)方法吗?
$key = 'private_key_string_shared_both';
$algorithm = 'AES-128-ECB'
$decrypt = openssl_decrypt($encrypt_string, $algorithm, $key);
答案 0 :(得分:3)
您可以使用:crypto
application。它是一个能够使用不同密码加密和解密的Erlang应用程序。
:crypto.block_decrypt(:aes_ecb, key, data)
密钥和数据都需要有16个可被字节整除的字节数。它们可以是二进制文件"like this"
或iolists 'like this'
。工作示例如下:
iex(1)> key = List.duplicate(100, 16)
'dddddddddddddddd'
iex(2)> string = List.duplicate(101, 16)
'eeeeeeeeeeeeeeee'
:crypto.block_encrypt(:aes_ecb, key, string)
<<6, 190, 103, 115, 142, 170, 75, 103, 128, 93, 168, 196, 108, 253, 41, 27>>