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 OTP Release 以在 Elixir 上执行不同的功能