所以我在运行我的脚本时遇到了一些问题。
我的脚本有两个命令:-e
用于加密和-d
用于解密。第二个 ARGV 是非对称加密的密钥,它加密/解密的字符串只是静态的,您会'Words and Stuff'
在代码中看到它。
当我运行脚本时,它只是弹出空白并且没有运行命令,而当我尝试运行时-e
,ruby encryptor.rb -e sup3rS3cretKey
它只是说Invalid command '-e'; type "help" for a list. error in -e
. 因此,由于我的require `openssl`
声明,它似乎出于某种原因运行了 openssl,并且它不运行我的命令,似乎是因为我的脚本不是从终端运行的。那么我该如何解决这个问题,它所做的 openssl 是什么?
-脚本
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
您最初的问题是您需要带有反引号的“openssl”,因此它试图在 shell 中调用它。交换普通引号的反引号,您将使其超过该行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句