Erlang crypto:stream_init在32位和64位系统上提供不同的密钥。如何使用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Erlang crypto:stream_init在32位和64位系统上提供不同的密钥。如何使用?相关的知识,希望对你有一定的参考价值。

使用crypto时我得到不同的密钥:stream_init(rc4,String)。在32位erlang与64位erlang上。

我需要在一个上使用crypto:stream_encrypt(),在另一个上使用crypto:stream_decrypt()。有什么办法让这个工作?

谢谢

答案

crypto:stream_init()返回一个State,而不是一个密钥,它的二进制表示在32位与64位架构上看起来不同。

加密/解密操作仍然可以正常工作,因为它们依赖于底层的OpenSSL实现。

作为加密的一个例子:

State = crypto:stream_init(rc4, "SecretKey").
{Newstate, Secret} = crypto:stream_encrypt(State, "SecretMessage").

并解密:

State = crypto:stream_init(rc4, "SecretKey"),
{Newstate, Message} = crypto:stream_decrypt(State, Secret),
Message = "SecretMessage".

即解密操作应返回使用密钥SecretMessage加密的相同SecretKey

以上是关于Erlang crypto:stream_init在32位和64位系统上提供不同的密钥。如何使用?的主要内容,如果未能解决你的问题,请参考以下文章

Erlang返回空二进制文件进行AES加密

检查 Erlang OTP Release 以在 Elixir 上执行不同的功能

在 centos 中使用 kerl 安装 erlang 时出现加密错误

Bash sha256不匹配二郎一[重复]

ctf show crypto0 ~ 12

[WeChall] Training: Crypto - Caesar I (Crypto, Training)