我在Rstudio的代码中输入了一个密码,我只是想以某种方式弄清楚,所以当我向某人显示我的代码时,他们看不到密码。有关如何做到这一点的任何建议? 非常感谢
答案 0 :(得分:7)
您可以在源文件中隐藏密码。
您可以运行类似
的内容<PySide.QtCore.QModelIndex(2,0,0x0,QStringListModel(0x17b0b40) ) at 0x7ff1a3715998>
<PySide.QtGui.QStringListModel object at 0x7ff1a3715950>
C++ address....... PySide.QtGui.QStringListModel/0x17b0b40
hasOwnership...... 1
containsCppWrapper 1
validCppObject.... 1
wasCreatedByPython 1
获取密码的数字转储。然后你可以在你的脚本中加入
dput(charToRaw("Password"))
# as.raw(c(0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64))
这至少会使它变得不那么人性化,并且在环境浏览器中不会有文本值的变量(至少我认为,我不确定RStudio如何显示原始数据)。
答案 1 :(得分:6)
你应该制作一个新的R脚本(让我们称之为login_credentials.R)并在那里存储你的密码
username <- "username_here"
password <- "password_here"
保存后,您可以使用source()
加载该脚本这将加载用户名和密码变量。
source(login_credentials.R)
> username
[1] "username_here"
> password
[1] "password_here"
login_function(username,password)
答案 2 :(得分:2)
您可以在主目录或项目目录中创建.Renviron
文件,在此目录中将这样的信息存储在环境变量中,以便在R脚本中使用。
如果这是~/.Renviron
或/path/to/my/project/.Renviron
的内容:
YO=secretsecret
然后,您可以通过secretsecret
检索Sys.getenv("YO")
。我写了如何为API身份验证here执行此操作。
注意:确保您的.Renviron
文件以换行符结束非常重要!此外,在生效之前,您需要重新启动R或Rstudio。阅读R startup以获取更多一般信息。
答案 3 :(得分:1)
稍微更安全的解决方案是存储密码的哈希值。这可以通过digest
函数实现:
> digest::digest("password") [1] "380796939c86c55d6aa8ea8c941f7652"
这实现了MD5哈希,这是一种单向加密函数,并且无法从该哈希中检索原始密码,即没有反函数。
然后,您需要修改输入密码的代码部分,并输入输入的密码:
# Username and password part of code
username <- "username_here"
password_hash <- "380796939c86c55d6aa8ea8c941f7652"
...
# Password testing part of code
if (digest::digest(user_password_input) == password_hash){
"password_correct"
}else{
"password_incorrect"}
其中user_password_input
是包含输入密码的变量。散列密码是安全的,因为即使有人拥有您的哈希密码,他们也无法使用它来通过密码验证。如果他们确实输入了您密码的哈希值,那么它将被重新散列并与password_hash
变量不同。
使用哈希是一种很好的做法,因为您的实际密码永远不会存储在代码中,并且哈希本身也没用。
答案 4 :(得分:1)
getPass软件包将对您有帮助。该程序包具有与readline()类似的getPass()函数,唯一的区别是键入时不会打印用户的文本。
例如,请考虑以下命令创建到数据库的连接,您通常可以在其中键入用户名和密码。
连接<-dbConnect(驱动程序,连接参数,用户名,密码)
尝试用getPass()函数替换密码:
图书馆(getPass) 连接<-dbConnect(驱动程序,connection_parameters,用户名, getPass())
因此,每当运行此行代码时,您都会看到一个弹出窗口,要求您输入密码。键入时密码不会显示,但会被点(或星号)掩盖。 Password PopUp window
尽管这要求您每次运行都输入密码,但它至少使您能够屏蔽密码。
该函数的参数为:
getPass(msg =“ PASSWORD:”,noblank = FALSE,forcemask = FALSE)