Итак, у меня возникли проблемы с запуском сценария.
Мой скрипт содержит две команды: -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