【发布时间】:2019-09-10 01:28:07
【问题描述】:
所以我在运行我的脚本时遇到了一些问题。
我的脚本有两个命令:-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
【问题讨论】:
-
您很快就选择了答案。我想这意味着您对其他答案不感兴趣。对吗?
-
是的。这有什么意义?
-
快速选择可能会阻止其他答案。大多数成员在做出选择之前至少要等待几个小时。那么,为什么要匆忙,除非您得出结论认为您的问题没有什么更值得说的了?
标签: ruby encryption terminal openssl kali-linux