如何在Ruby中加密JWT负载javascript和解密
我正在尝试用javascript加密JWT负载,然后在我的Ruby应用程序中解密它。我发现了一个简单的Ruby加密/解密工具,但我不知道如何在javascript中进行加密。有没有办法用javascript实现这种加密,这样我的Ruby后端就可以对其进行解密如何在Ruby中加密JWT负载javascript和解密,javascript,ruby,encryption,jwt,Javascript,Ruby,Encryption,Jwt,我正在尝试用javascript加密JWT负载,然后在我的Ruby应用程序中解密它。我发现了一个简单的Ruby加密/解密工具,但我不知道如何在javascript中进行加密。有没有办法用javascript实现这种加密,这样我的Ruby后端就可以对其进行解密 def encrypt(key) cipher = OpenSSL::Cipher.new('DES-EDE3-CBC').encrypt cipher.key = Digest::SHA1.hexdigest key
def encrypt(key)
cipher = OpenSSL::Cipher.new('DES-EDE3-CBC').encrypt
cipher.key = Digest::SHA1.hexdigest key
s = cipher.update(self) + cipher.final
s.unpack('H*')[0].upcase
end
def decrypt(key)
cipher = OpenSSL::Cipher.new('DES-EDE3-CBC').decrypt
cipher.key = Digest::SHA1.hexdigest key
s = [self].pack("H*").unpack("C*").pack("c*")
cipher.update(s) + cipher.final
end
puts plain = 'confidential' # confidential
puts key = 'secret' # secret
puts cipher = plain.encrypt(key) # 5C6D4C5FAFFCF09F271E01C5A132BE89
puts cipher.decrypt('guess') # raises OpenSSL::Cipher::CipherError
puts cipher.decrypt(key) # confidential
不要重新发明轮子。有一个标准:加密JWT(JWE)=>。 此外,正如Holger Just所提到的,您应该遵循并避免不安全的算法
列出了许多库,它们可以提供比通常的签名令牌(JW)更多的功能。不幸的是,当时没有Ruby库支持JWE。您的示例中的密码选择非常过时,很可能不安全。通常情况下,JWT也很难安全地实现,而且常常是错误的工作工具。如果您仍然需要加密内容,如果可能的话,您不应该尝试自己实现低级加密,而应该使用更高级的抽象,例如libnaude提供的抽象(您可以在Ruby端和Javascript中使用它)。