如何复制openssl_encrypt?

我希望有人已经在 golang 中实现了这一点,因为我什至不擅长密码学。但是,在将项目从 php 移植到 golang 时,我遇到了移植 openssl_encrypt 方法的问题here。我也对源代码进行了一些研究,但无济于事。


这是我在golang中实现的方法。这给了我输出


lvb7JwaI4OCYUrdJMm8Q9uDd9rIILnvbZKJb/ozFbwCmLKkxoJN5Zf/ODOJ/RGq5

这是我在使用 php 时需要的输出。


lvb7JwaI4OCYUrdJMm8Q9uDd9rIILnvbZKJb/ozFbwDV98XaJjvzEjBQp7jc+2DH

这是我用来用php生成它的函数。


$data = "This is some text I want to encrypt";

$method = "aes-256-cbc";

$password = "This is a really long key and su";

$options = 0;

$iv = "MMMMMMMMMMMMMMMM";


echo openssl_encrypt($data, $method, $password, $options, $iv);

对我来说,它看起来非常接近,我一定遗漏了一些明显的东西。


哆啦的时光机
浏览 256回答 6
6回答

潇潇雨雨

你非常接近,但你的填充错误。根据这个答案(和 PHP 文档),PHP 使用默认的 OpenSSL 填充行为,即使用所需的填充字节数作为填充字节值。我所做的唯一改变是:copy(plaintextblock[length:], bytes.Repeat([]byte{uint8(extendBlock)}, extendBlock))您可以在此处查看完整的更新代码。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go