我是Jruby的新手,我需要一些关于此代码的帮助。我知道我做错了。我真的需要帮助来解决这个问题。
我在做什么?屏蔽JRuby中的用户密码输入。 计划:使用java的System.console来完成它。
代码:
require "rubygems"
require "java"
include_class 'java.io.PrintStream'
include_class 'java.io.ByteArrayOutputStream'
include_class 'java.lang.System'
include_class 'java.io.Console'
Console console = System.console();
String password = console.readPassword("Enter password: ");
puts password
请帮忙。谢谢
答案 0 :(得分:1)
它需要从char[]
转换回String对象,如下所示:
require "java"
include_class 'java.lang.System'
include_class 'java.io.Console'
console = System.console();
password = console.readPassword("Enter password: ");
passwordString = java.lang.String.new(password)
printf("%s\n", passwordString )
答案 1 :(得分:1)
您需要将密码读入char[]
,将其转换为java.lang.String
,然后将其转换为Ruby String
:
require 'java'
include_class 'java.lang.System'
include_class 'java.io.Console'
# Read the password into a char[]
java_char_array = System.console.readPassword("password:")
# Turn that into a java.lang.String
java_string = java.lang.String.new(java_char_array)
# Turn this into a Ruby string and strip off the newline.
password = java_string.to_s.strip
read_password
给你一个char[]
的原因有点复杂,但它归结为一首关于安全的大歌和舞蹈。您可以使用Array.fill
来核对char[]
的内容,从而防止密码在内存中长时间停留。
答案 2 :(得分:0)
试试这个,
console = System.console();
String password = console.readPassword("Enter password: ");
puts password