gpt4 book ai didi

ruby - 从 ruby​​ 内部加密数据包而不依赖 knife

转载 作者:数据小太阳 更新时间:2023-10-29 08:46:29 24 4
gpt4 key购买 nike

目前要加密一个数据包,我必须做的是:system "knife data bag from file TemporaryEncrypting\"#{enc_file_path}\"--secret-file #{Secret_Key_Path}"

这行不通,因为 knife 找不到配置文件,而且我似乎无法读取 C:\chef 中的配置文件。

我如何在 ruby​​ 中执行此操作?

最佳答案

我想出了如何在 ruby​​ 内部加密,只需使用这段代码:

require 'chef/knife'
#require 'chef/encrypted_data_bag_item' #you need to do this in chef version 12, they've moved it out of knife and into it's own section
require 'json'

secret = Chef::EncryptedDataBagItem.load_secret Secret_Key_Path

to_encrypt = JSON.parse(json_to_encrypt)

encrypted_data = Chef::EncryptedDataBagItem.encrypt_data_bag_item to_encrypt, secret

通过此 answer 中的信息获得答案,这里是有问题的代码:

namespace 'databag' do
desc 'Edit encrypted databag item.'
task :edit, [:databag, :item, :secret_file] do |t, args|
args.with_defaults :secret_file => "#{ENV['HOME']}/.chef/encrypted_data_bag_secret"
secret = Chef::EncryptedDataBagItem.load_secret args.secret_file
item_file = "data_bags/#{args.databag}/#{args.item}.json"
tmp_item_file = "/tmp/#{args.databag}_#{args.item}.json"
begin
#decrypt data bag into tmp file
raw_hash = Chef::JSONCompat.from_json IO.read item_file
databag_item = Chef::EncryptedDataBagItem.new raw_hash, secret
IO.write tmp_item_file, Chef::JSONCompat.to_json_pretty( databag_item.to_hash )
#edit tmp file
sh "#{ENV['EDITOR']} #{tmp_item_file}"
#encrypt tmp file data bag into original file
raw_hash = Chef::JSONCompat.from_json IO.read tmp_item_file
databag_item = Chef::EncryptedDataBagItem.encrypt_data_bag_item raw_hash, secret
IO.write item_file, Chef::JSONCompat.to_json_pretty( databag_item )
ensure
::File.delete tmp_item_file #ensure tmp file deleted.
end
end
end

关于ruby - 从 ruby​​ 内部加密数据包而不依赖 knife,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26978737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com