aes密钥生产 php,使用40个字符的密钥在PHP中加密到AES256 CBC

博主在尝试使用PHP的mcrypt_cbc函数进行加密,遇到问题。他们有一个40字符的OAuth密钥,并希望将其用于SHA256CBC加密的json对,然后base64编码。目前的实现可能不正确,因为疑惑是否RIJNDAEL_128适用于SHA256,以及如何正确使用密钥和初始化向量(IV)。他们参考了一个Ruby代码示例,但对Ruby不熟悉。寻求关于如何在PHP中正确实现这一过程的指导。
摘要由CSDN通过智能技术生成

我在尝试围绕mcrypt_cbc打包头时遇到了一些麻烦。我有一个40字符的密钥(OAuth密钥 - 手动执行加密/签名,而不是使用OAuth库)来使用,但我不知道应该如何使用它。

最终结果需要是一个加密到SHA256 CBC的json对,以及用base64编码的结果。我拥有的是..

$key = '123456789012345678901234567890123456789012345678901234567890';

$pair = 'user:pass';

$encrypted = base64_encode(mcrypt_cbc(MCRYPT_RIJNDAEL_128,$key,$pair,MCRYPT_ENCRYPT,""));我相信这是不对的,但我有以下问题:

如果我正确地阅读了PHP文档,RIJNDAEL_128可以用于SHA256 - 这是正确的吗?

对于Key和IV ..我也看到了以下内容:

$encrypted = base64_encode(mcrypt_cbc(MCRYPT_RIJNDAEL_128,substr($key,0,32),$pair,MCRYPT_ENCRYPT,substr($key,32,16)));我有点困惑 - 头32个字符用于键,其余16个用于IV? IV总是只是关键的一部分?而这将如何完成40个角色?使用IV ...

substr($key,32,8)结果是

The IV parameter must be as long as the blocksize下面的Ruby代码是我参考的API的一个例子,但是对于Ruby我没有什么知识

def encrypt_aes(data)

sha_key = Digest::SHA2.digest(@secret_key)

aes = OpenSSL::Cipher::Cipher.new("AES-256-CBC")

aes.encrypt

aes.key = sha_key

aes.iv = "\x00" * 16

encrypted = aes.update(data) + aes.final

Base64.encode64(encrypted)

end任何指导都将不胜感激。我当时在PHP方面相当有经验,但密码学一直是我最薄弱的领域。我拥有的最丰富的经验是使用C++中的Botan库,而这一切都要归功于修改各种片段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值