Как зашифровать / расшифровать строки в Ruby через терминал? - PullRequest
0 голосов
/ 19 апреля 2019

Итак, у меня возникли проблемы с запуском сценария.

Мой скрипт содержит две команды: -e для шифрования и -d для дешифрования. Второй ARGV является ключом для асимметричной криптографии, и строка, которую он шифрует / дешифрует, является просто статической, вы увидите, что в коде написано 'Words and Stuff'.

Когда я запускаю скрипт, он просто появляется пустым, команда не запускается, и когда я пытаюсь запустить -e, например, ruby encryptor.rb -e sup3rS3cretKey, он просто говорит Invalid command '-e'; type "help" for a list. error in -e. Таким образом, кажется, что он запускает openssl по какой-то причине из-за моего оператора require `openssl`, и он не управляет моими командами, похоже, что мой скрипт не запускается из терминала. Итак, как мне это исправить, и как называется openssl, что он делает?

-script

require `openssl`

if ARGV[0] == '-e' #Encrypt

 if ARGV.length != 2
  puts "Please input a key."
  exit
 end

 puts "Encrypting"
 key = ARGV[1]
 cipher = OpenSSL::Cipher.new('Words and Stuff').encrypt
 cipher.key = Digest::SHA1.hexdigest key
 s = cipher.update(self) + cipher.final

 s.unpack('H*')[0].upcase
 puts "Encrypted"

elsif ARGV[0] == '-d' #Decrypt

 if ARGV.length != 2
  puts "Please input a key."
  exit
 end

 puts "Decrypting"
 key = ARGV[1]
 cipher = OpenSSL::Cipher.new('Words and Stuff').decrypt
 cipher.key = Digest::SHA1.hexdigest key
 s = [self]/pack("H*").unpack("C*").pack("c*") 

 cipher.update(s) + cipher.final
 puts "String decrypted."
end

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

irb очень удобен для таких ситуаций.Просто введите irb и введите require "openssl" в командной строке.Затем вы можете протестировать строку за раз.

Вот несколько проблем: при использовании backssks вокруг openssl виснет сценарий (попробуйте использовать одинарные или двойные кавычки, как отмечено).«Слова и прочее» не поддерживается алгоритмом (попробуйте AES-128-CBC).cipher.key хочет 16-байтовую строку (я просто вставил туда «sup3rS3cretKeyyz»)

0 голосов
/ 20 апреля 2019

Ваша первоначальная проблема в том, что вам требуется 'openssl' с обратными галочками , поэтому он пытается вызвать его в оболочке. Поменяйте галочки на нормальные кавычки, и вы пройдете через эту строку.

...