0

うわー、なんと漠然とした質問だろう。enc_fileRails リポジトリにファイルがあります。

environments/production.rbの には、次のものがあります。

authentication_file = "#{Rails.root}/enc_file"
unless File.exist?(authentication_file)
    puts "ERROR: File not found! (#{authentication_file})"
    raise SystemExit, 1
end
my_config = YAML.load(PaymentGatewayCipher.decrypt(authentication_file)).symbolize_keys!
config.app_config.pay_pal.merge!(pay_pal_config.slice(:login, :password, :business, :business_id, :cert_id, :private_key, :signature).merge(
  :return_to_merchant => false,
  :server => 'whatever.paypal.com'
))

次に、私のpayment_gateway_cipher.rbファイルには次のものがあります。

require 'openssl'

# Encapsulates payment gateway encryption / decryption utility functions
class PaymentGatewayCipher
  class << self
    def encrypt(file, options = {})
      cipher = create_cipher
      cipher.encrypt(cipher_key)
      data = cipher.update(File.read(file))
      data << cipher.final

      if to_file = options[:to]
        # Write it out to a different file
        File.open(to_file, 'wb') do |f|
          f << data
        end
      end

      data
    end

    # Decrypts the given file
    def decrypt(file)
      cipher = create_cipher
      cipher.decrypt(cipher_key)
      encrypted_data = File.open(file, 'rb') {|io| io.read}
      data = cipher.update(encrypted_data)
      data << cipher.final
    end

    # Generates the cipher to be used for encryption/decryption
    def create_cipher
      OpenSSL::Cipher::Cipher.new('aes-256-cbc')
    end

    # Loads the cipher key used for the symmetric algorithm
    def cipher_key
      File.open(File.join(Rails.root, 'config/mystuff/live/cipher.key'), 'rb') {|io| io.read}
    end
  end
end

enc_fileRailsの外部にあるコンテンツを表示するには、どうすれば復号化できますか? 内容を確認して修正し、可能であればファイルを再保存したい。

考え?

4

1 に答える 1

0

あなたはそこに関数を持っているのでdecrypt、おそらくその関数の結果を出力することによって?

puts decrypt("path/to/enc_file")

または、Ruby の外部で表示できるファイルに同じものを書き込みます。

File.open("decrypted_file", "w") do |f|
  f.write decrypt("path/to/enc_file")
end
于 2012-12-07T18:41:01.283 に答える