为了账号安全,请及时绑定邮箱和手机立即绑定

如何复制openssl_encrypt?

如何复制openssl_encrypt?

Go
哆啦的时光机 2021-09-21 22:34:39
我希望有人已经在 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);对我来说,它看起来非常接近,我一定遗漏了一些明显的东西。
查看完整描述

6 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

你非常接近,但你的填充错误。根据这个答案(和 PHP 文档),PHP 使用默认的 OpenSSL 填充行为,即使用所需的填充字节数作为填充字节值。

我所做的唯一改变是:

copy(plaintextblock[length:], bytes.Repeat([]byte{uint8(extendBlock)}, extendBlock))

您可以在此处查看完整的更新代码。


查看完整回答
反对 回复 2021-09-21
  • 6 回答
  • 0 关注
  • 255 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信