我已经能够使用这里编写的Ruby代码Data bag encryption encrypts on Chef server, but how to encrypt local copy?作为加密我的数据包的基础,而不必使用非常棒的刀具。然而,我的问题出现在解密这些加密数据库时,因为此处编写的代码Data bag encryption encrypts on Chef server, but how to encrypt local copy?似乎无法正常工作。
我已成功将加密的数据库作为json下载,将其转换为哈希,加载我的对称密钥(用于Chef加密和解密)并使用以下方法创建数据库:
databag_item = Chef::EncryptedDataBagItem.new raw_file_down, secret
如果我要检查这个databag_item
的类,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_hash
选项并执行此操作时:
IO.write tmp_item_file, Chef::JSONCompat.to_json_pretty( databag_item)
我收到233或41这些方法都没有产生解密数据包。有人可以帮忙吗?
BTW我是Chef的新用户