有没有办法安全地从Elixir发送字符串到PHP?(没有SSL)

时间:2016-01-18 00:12:37

标签: elixir phoenix-framework

我想通过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);

1 个答案:

答案 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>>

Example on how to do padding of binaries in Erlang