首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Python转换为PBKDF2HMAC

将Python转换为PBKDF2HMAC
EN

Stack Overflow用户
提问于 2021-02-26 00:58:04
回答 1查看 93关注 0票数 0

我在python中有以下内容,并希望将其转换为ruby。但我不能让它工作。原始源来自这里:https://github.com/HurricaneLabs/splunksecrets/blob/177d350a9164791c66139d11b4c63f5db83710b6/splunksecrets.py#L112

我的“秘密”是:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Python

代码语言:javascript
运行
复制
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC

kdf = PBKDF2HMAC(
    algorithm=hashes.SHA256(),
    length=32,
    salt=b"disk-encryption",
    iterations=1,
    backend=default_backend()
)
key = kdf.derive(secret[:254])

print("KDF: %s" % key)

红宝石

代码语言:javascript
运行
复制
  require 'openssl'

  kdf = OpenSSL::KDF.pbkdf2_hmac(
    secret,
    salt: 'disk-encryption',
    iterations: 1,
    length: 32,
    hash: 'SHA256'
  )

  puts "KDF: #{kdf.unpack1('H*')}"

开始和结束在某种程度上是相同的,但中间根本不匹配。为了更好地阅读,我从python字符串中删除了\x。

代码语言:javascript
运行
复制
org py KDF: b'\x0e\x04\xc2^Z\x04t\xddCh\x97E\xf7\xc9%o\xff\xb8o\x96\x0f\x8aA\xablg\x06\x85\\\xc0\xa3\xde'
Python KDF: b'0e04c2 ^Z04tddCh97Ef7c9%offb8o960f8aAablg0685\\             c0a3de'
Ruby   KDF:   0e04c2 5e5a0474dd43689745f7c9256fffb86f960f8a41ab6c6706855c c0a3de
EN

回答 1

Stack Overflow用户

发布于 2021-02-26 17:40:33

正如Topaco在评论中所说:一切都很好,只是打印格式有误导性。

在Python语言中,Ruby对unpack1('H*')的解释是.hex()。所以它应该是:

代码语言:javascript
运行
复制
print("KDF: %s" % key.hex())

所以在Ruby中的KDF实现是可以的,并且一直在工作。只是因为以错误的格式打印值而感到困惑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66373020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档