在任何操作系统中,Fn都不允许使用密码。例如,我不能保留Fn+一些字符作为密码。
背后的原因是什么?是否有任何技术方面的问题阻止操作系统设计人员允许使用Fn密钥作为密码?
我能想到的一个原因是,在某些笔记本电脑中,Fn按键会启用或禁用数字键盘。但是台式机呢?由于台式机键盘具有单独的Fn,我们为什么不能在密码中使用它?
在任何操作系统中,Fn都不允许使用密码。例如,我不能保留Fn+一些字符作为密码。
背后的原因是什么?是否有任何技术方面的问题阻止操作系统设计人员允许使用Fn密钥作为密码?
我能想到的一个原因是,在某些笔记本电脑中,Fn按键会启用或禁用数字键盘。但是台式机呢?由于台式机键盘具有单独的Fn,我们为什么不能在密码中使用它?
Answers:
密码只是文本 ; 它们包含字符,而不是按键。电脑不像机械打字机,两者之间有区别。
使用记录的按键输入密码只会带来以下缺点:
安全性:更长的密码比增加字母更安全有效。(如果您以26个基本字母开头,则8个字母的密码具有26 8 = 208827064576组合。将其扩展为字母和数字将得到36 8个组合,是13.5倍。但是,如果您将其长度再增加一个字母,则表示ð得到26个9可能的密码,正好26倍多。两个字母长?26点10的可能性,676倍多。我一马。)
(尽管另一方面,像这样的简单计算并不能说明字典攻击,但是我认为,如果可能的话,使用自己的名字作为密码的同一个人不会自愿进行功能键跳舞。)
用户期望:几乎每个人都将密码视为包含单词和字母的东西(只是保密)。因此,如果键之类的字符正常输入F7或Fn不正常输入,那么它也不应该在密码字段中输入任何内容。如果它执行诸如调整窗口大小或弹出Google之类的操作,则其在密码字段中的操作也应完全相同。
功能键的主要用途:某些键由程序本身或操作系统使用。不同系统使用的密钥有所不同。有时会添加新的键盘快捷键。
假设您使用WinI了密码,然后从Windows 98升级到Windows 10;现在您无法再输入密码,因为WinI该密码已由操作系统本身使用。
或者,也许您使用FnRight的是旧笔记本电脑,但这意味着在新笔记本电脑上“跳到下一首歌”。突然,除非您先关闭音乐播放器,否则您无法登录Gmail。
设备之间的差异:部分按键并非在所有键盘中都存在。您上次看到带Fn按键的PC桌面键盘是什么时候?或带有Win按键的Mac键盘?甚至同一台PC也不总是具有Pause或SysRq不再具有。
您将如何在移动设备上输入这些按键?假设在具有12个按钮的功能手机上?或iPhone,在他们开始允许使用第三方键盘之前...
人们已经有这样的问题。通常,他们甚至无法键入自己的脚本/语言(甚至是基本的带有重音符的拉丁字母á
或ū
),并被迫坚持使用美国QWERTY键盘布局所提供的功能-这是唯一在公共图书馆和整个地方都可以连续使用的功能。
最后,密码仍然是文本(许多OS组件希望它们是文本),因此OS需要确定如何将每次按键转换为可以存储为文本的形式。
类似xterm的终端应用程序已经可以做到这一点(就像实际的物理终端一样),但是,在三十年后,他们仍未就一种实现方式达成共识。箭头键至少有两种不同的翻译方式,以及至少四种不同的翻译F1-F12的方式。
因此,您可以输入,F3并且基于终端的程序会将其视为文本–但您不知道它是ESC O R
or ESC [ 1 3 ~
还是ESC [ [ C
or或ESC [ O
...
ESC O R
对我来说不是ESC O Q
;我认为您可能会遇到一个错误;)
Linux将把几乎所有按键(除了修饰键本身)用作密码输入。在我的拱门系统上,我可以轻松地将F12-F10-F9设置为我的密码。该行中缺少F11,因为我的窗口管理器吞下了该键并将其解释为“全屏”命令。
这就是您可能尝试过的大多数东西的问题:窗口管理器(GUI)在将输入传递给您要输入数据的程序之前,将吞下某些键。如果您位于没有任何GUI的控制台中,您几乎可以使用任何您可以想象作为密码输入的内容。
编辑:还请注意,某些键盘的fn键输入已硬连线至硬件更改。例如,在我的Lenovo fn + space上,将完全独立于操作系统切换键盘背光。在这种情况下,操作系统甚至都不会收到按键。
编辑编辑:grawity的答案(对此答案的评论)详细介绍了为什么您可能不想这样做。
那取决于终端,而不是操作系统。
某些终端可以配置为存储任意字符串。我是在wyse-50之前这样做的,使用转义序列对它们进行编程。
最近,您可以设置translations
资源xterm
以发送string。对此没有任何转义序列(您会发现这很有用:DECUDK
是最接近的序列,并以十六进制发送其结果)。
一些终端(如Terminal.app)有一个首选项,它可以让你把任意的字符串存在。同样,没有转义序列,但是绝对可以配置。
一些(显然是gnome-terminal和konsole)可以让您对键盘进行一些有限的配置。
最终,答案归结为寻找
进一步阅读:
此答案涉及终端中的密码,而不是GUI。在GUI中,应用程序甚至可能看不到功能键为文本。GUI具有不同的约束,例如,在Windows上(按注释),可能会在安全桌面中提示输入密码,因此,如何设置键盘并不重要。特别是,由于它与其他进程分开运行,因此您不能使用加载项(例如自动热键)来存储/粘贴密码。其他GUI具有自己的规则(XSendEvent
例如,请参见),不一定由操作系统决定,而是由运行时库决定。
进一步阅读:
简而言之,您无法Fn在密码中使用按键组合,因为没有为这些组合定义相应的字符。我要说明的一点是,即使可以,也不应在键入密码时使用非标准密钥。如果出了问题,您将有麻烦。您将知道您的密码,但是将无法输入:
等等
因为功能键在您的计算机上执行功能。它们不构成在当前文本上下文(此类上下文包括密码输入)中添加文本的功能。功能键的全部重点是执行与文本输入不同的元操作。
此外,它们是100%特定于操作系统的,因此根本无法移植。您将找不到ASCII中的功能键代码。