Ruby中Chef加密数据包的解密

Ruby中Chef加密数据包的解密,ruby,encryption,chef-infra,Ruby,Encryption,Chef Infra,我已经能够使用这里编写的Ruby代码作为基础来加密我的数据包,而不必求助于很棒的刀子工具。然而,我的问题发生在解密这些加密数据包时,因为这里编写的代码似乎无法正常工作 我已成功地将加密的数据包下载为json,将其转换为哈希,加载用于Chef加密和解密的对称密钥,并使用以下方法创建了一个数据包: databag_item = Chef::EncryptedDataBagItem.new raw_file_down, secret 如果我要检查这个databag_项的类,Ruby会告诉我它是一个C

我已经能够使用这里编写的Ruby代码作为基础来加密我的数据包,而不必求助于很棒的刀子工具。然而,我的问题发生在解密这些加密数据包时,因为这里编写的代码似乎无法正常工作

我已成功地将加密的数据包下载为json,将其转换为哈希,加载用于Chef加密和解密的对称密钥,并使用以下方法创建了一个数据包:

databag_item = Chef::EncryptedDataBagItem.new raw_file_down, secret
如果我要检查这个databag_项的类,Ruby会告诉我它是一个Chef::EncryptedDataBagItem对象。但是,当我尝试将其写入文件时

IO.write tmp_item_file, Chef::JSONCompat.to_json_pretty( databag_item.to_hash )
我收到以下错误:

Chef::EncryptedDataBagItem::DecryptionFailure: Error decrypting databag value: 'wrong final block length'.
很可能提供的密钥不正确。当我删除.to_散列选项并执行此操作时:

IO.write tmp_item_file, Chef::JSONCompat.to_json_pretty( databag_item)
我收到233或41。这些方法都不会产生解密的数据包。有人能帮忙吗


顺便说一句,我是Chef的新用户

您是否调用key=Chef::EncryptedDataBagItem.load_secretpath to file来加载您的密钥文件,然后是Chef::EncryptedDataBagItem.loadname,item,key?您确定数据库中的原始文件\u down\u item=Chef::EncryptedDataBagItem.new原始文件\u down,秘密实际上是散列,而不是字符串或其他东西?因为名称表明它是一个读入字符串的文件。另外,请向我们提供加密的数据包-文件内部的外观如何。请参阅gist trekr5/gist:3afe8fe264a007f50665显示解密步骤的顺序。我建议使用ChefVault,它更易于使用,更安全。