V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 13 页 / 共 177 页
回复总数  3534
1 ... 9  10  11  12  13  14  15  16  17  18 ... 177  
2023-12-11 02:40:03 +08:00
回复了 acr0ss 创建的主题 算法 [请教] 生活中的算法题:密码尝试次数
你需要搜索的是 de Brujin 序列 (sequence)
另外我对 Windows 下 Office 提示文件不存在存疑,至少跳转列表是可以正确处理文件移动的。
每个软件都可以自己实现最近打开的文件列表,所以这个问题无从回答。我也不太熟悉 macOS ,但可以提供一下 Windows 的视角,两者相通,假设楼主说的是程序不在运行的时候改名。

1. 存文件路径、建立软链接

无法处理文件重命名。

2. 建立硬链接、存标识符(“inode”)

技术上可行,但是实操不可行,原因有两点:一是并不是所有的文件系统都有硬链接,每个文件系统的标识符格式不同;二是很多软件都会采用写新、删旧、重命名三部曲覆盖文件,这会导致以前的硬链接和新文件脱离关系。

3. 建立快捷方式(.lnk )

这是标准解法,因为快捷方式优先考虑原来的路径是否存在,如果不存在则会开始链接追踪,采用文件标识符(“inode”)、文件创建读取修改时间、文件大小、文件路径等一系列匹配方法找到文件的新位置、新名字。

三部曲覆盖文件会转移文件时间信息(不转移标识符),这叫做“文件系统隧穿”。

macOS 里快捷方式对应的概念是“替身”,或许也有追踪的功能。
Windows 可以创建密码重设磁盘(例如 U 盘;重设密码的时候需要插入此 U 盘,不需要旧密码),我忘记使用密码重设 U 盘是否会导致丢失密码学数据了——理论上可以设计成不会丢失的状态,因为可以把密码学数据备份到 U 盘上,但我不记得具体实现。
@geelaw #11

>如果修改密码的时候提供旧密码,那么 Windows (在操作人有合适的权限的情况下)当然可以修改它记住的 H ,允许用新密码通过 Windows 的登录逻辑。但是没有 P 的时候 S 、K 依然无法还原。

应该改成

>如果修改密码的时候 不 提供旧密码……
@dgzting #10 是否有那个问题是数学决定的,不是 API 决定的。Windows 有一些自动加密的内容使用用户的密码导出的密钥,可以简单地理解为这样的模式:

1. 用户建立的时候生成 AES 密钥 K
2. 如果用户密码是 P ,则计算 S = MakeKeyFromPassword(P),其中 S 是另一个 AES 密钥
3. 在硬盘上保存 AutoKey = AES.Enc(key=S, plaintext=K)
4. 如果用户设置文件 F 要加密,则在硬盘上保存 EncF = AES.Enc(key=K, plaintext=F),解密的时候可以用 P 导出 S ,再用 S 解密 AutoKey 得到 K ,最后用 K 解密 EncF 得到 F

注意 K 是没有直接保存在硬盘上的。

5. 如果用户修改密码,那么先用旧密码 P 得到 S ,然后用 S 解密 AutoKey 还原 K ,再用新密码 P' 得到 S',再设置 AutoKey 为 AES.Enc(key=S', plaintext=K),这样每次修改密码的时候只需要重新加密少量数据,不需要把所有文件都解密再重新加密一次。

这个机制和 Windows 验证用户登录的机制是分开的,你可以认为 Windows 另外保存了密码 P 的 hash 值 H ,而 H 本身没有加密,登录时 Windows 只是计算用户尝试登录时输入的密码的 hash 并和 H 比较。可以简单认为登录成功的时候 Windows 重新见到了 P ,因此可以重新算出 S 、K 并在内存里缓存 P 、S 、K 。然而假设用户没有登录,比如操作系统刚启动的时候,此时 Windows 只知道 H ,不知道 P 、S 、K 。

如果修改密码的时候提供旧密码,那么 Windows (在操作人有合适的权限的情况下)当然可以修改它记住的 H ,允许用新密码通过 Windows 的登录逻辑。但是没有 P 的时候 S 、K 依然无法还原。

换言之,是否允许登录纯粹是操作系统想不想的问题,但是否能解密数据,是能不能的问题。

* * *

你在 lusrmgr.msc 和 compmgmt.msc 里面修改用户密码的时候会提示

Resetting this password will might cause irreversible loss of information for this account.

等等一大串,并且告诉你(作为用户而不是开发者时候)正确做法是按 Ctrl+Alt+Delete 打开“Windows 安全”对话框,选择 Change a Password ,然后输入用户名、旧密码、新密码(两次)。

net user 和 Set-LocalUser 都不需要旧密码,因此一定会导致密码学数据不再可用(除非你后来想起来旧密码并且旧的例如 AutoKey 和 EncF 还没有被删除,我不知道 Windows 会不会自动删除失效的 AutoKey )。实际上它们和 lusrmgr.msc / compmgmt.msc 归结为同一个 API 。

而 NetUserChangePassword 需要旧密码,而且实际上 NetUserChangePassword 会类似之前提到的解密、重加密操作,所以不会有这个问题。它和 Ctrl+Alt+Delete 是一样的。

* * *

是否丢失密码学保护的数据和用户在本地还是域控制器上无关。在 Windows 提供的 API 下,丢失数据当且仅当修改密码不需要提供旧密码。
用 net user 修改密码是有多想不开……

凡是不需要旧密码就可以强行修改密码的手段,都会导致被修改密码用户原先保存的密钥失效,使这个用户(密码学意义上)不能再访问加密数据( EFS 、基于用户的 Crypto 系列 Windows API )。

推荐从 https://learn.microsoft.com/en-us/windows/win32/api/lmaccess/nf-lmaccess-netuserchangepassword 开始阅读文档。
2023-12-03 15:37:23 +08:00
回复了 liplushe 创建的主题 Windows Windows 选择文件打开方式列表中出现大量 Qt 应用,如何清除?
这个问题很容易诊断,但是用文字表达比较麻烦。

简而言之,你应该检查 HKCR\.png\OpenWithProgIDs 里面的东西,删除多余的 value ,并且删除多余的一些 ProgID 。但后面(删除多余的 ProgID )这个操作是要比较小心的,不熟悉的话容易删除正常的文件关联项。
2023-12-01 09:14:05 +08:00
回复了 sdjl 创建的主题 问与答 为什么总感觉那些书没有读好的人听不懂你说的话?
@sdjl #4

>请勿使用“否定式反问句”。
>难道你没有这种感觉?
2023-11-30 06:24:06 +08:00
回复了 cnt2ex 创建的主题 程序员 outlook 邮箱居然允许伪装成另外一个邮箱
自己写个发邮件的程序一样可以,Gmail 现在也是可以的,而且我记得还有一种模式是记住其他账户的密码,从而直接通过正确的服务器发送。这算不上伪装吧,毕竟 Sender 写明了是谁。

电子邮件头的很多信息和传输来源目的是分开的,比如很多邮件服务器都会在送达 bcc 收件人的时候也删去 bcc 行,另外邮件列表也大量运用 Sender/From 不同、To/Cc/Bcc 都没有实际收到邮件的邮箱地址的情况。
2023-11-30 02:51:14 +08:00
回复了 amiwrong123 创建的主题 微软 onedrive 账号 原来和 微软账号 不是同一个账号啊?
我怀疑楼主混淆了微软的个人账户(微软账户)和微软托管或者联邦认证的机构账户。

微软账户 = 个人 OneDrive 账户 = Xbox 账户 = Skype 账户

如果微软账户具有微软控制的域名的邮箱,则它也是 Outlook.com/Hotmail 账户,并且后者永远都是微软账户。

Office 365 教育版是机构账户。如果你想把机构的 OneDrive 在个人的 OneDrive 里使用,我记得不久以前不行(可以从机构里 share 出来,如果机构允许,但似乎不能把共享文件夹加入个人账户),现在的情况还请查阅文档。但最简单的用法是在电脑上同时使用 OneDrive 和 OneDrive for Business ,在两个没有包含关系的文件夹里同步就行了。
2023-11-29 11:27:37 +08:00
回复了 molika 创建的主题 Windows 苹果有统一的推送 APNs,那么 win 有类似的服务吗?
2023-11-27 12:22:23 +08:00
回复了 dzdh 创建的主题 Windows 有能像 iOS 那样管理剪贴板的工具吗?
这件事情大概要 Windows 自己做才能做好。从权限上考虑,剪贴板是 window station 级别的对象,并且同一个 window station 里面的所有窗口都可以访问(包括高权限、普通权限、低完整级别的进程,即可以从记事本复制命令到管理员权限的命令行,等等)。

但要完成这一点是相当困难的,因为远古时期的 API 是同步 API ,剪贴板也不例外,贸然插入一个模式对话框会导致尝试粘贴的程序假死。

@Whalko #4 远古时期( 2003 年)的 Office 系列自带一个剪贴板历史管理工具,它显然要不断监听并读取剪贴板。
2023-11-27 02:15:25 +08:00
回复了 LeeReamond 创建的主题 机器学习 深度学习任务中要求损失函数必须是可导的吗?
通常来说只需要几乎处处可微,比如 ReLU 在 0 不可微(但是作为凸函数又有次梯度),这里就不展开了。

如果你是用 PyTorch 提供的函数自己设置损失函数,那么可微函数复合依然可微,就是链式法则、反向传播,实际上损失函数不过是计算图普通的一部分,计算微分的方法无甚差别。

如果你是说自己用 C++ 写新的函数,那么你可以在 C++ 里实现函数和它的微分,并注册在一起,这样 PyTorch 计算微分的时候就知道怎么算了。我在微软的时候做过一个 TensorFlow 的扩展(三重线性插值),不过他们没有开源(提供了一个编译好的包可以下载),但似乎新版的 TF 已经有这个功能了所以现在已经没必要了。
2023-11-21 15:29:29 +08:00
回复了 xuegy 创建的主题 职场话题 如何对付卢德主义的同事
@zw1one #3 请注意括号里的提示,A 对 B 说 A 的工资不违法,A 对 B 说 C 的工资可不一定( C 不等于 A ),讨论工资是权利,然而他人的工资或许是他人的隐私,因而受到保护。从 #4 才知道这是公开信息。
2023-11-21 11:29:44 +08:00
回复了 lstz 创建的主题 程序员 笔记类软件,内部用 git 实现版本控制,用户会喜欢吗?
楼主可以从上面的回复了解绝大多数用户的想法,但我也想鼓励楼主:存在着对底层技术在意的用户的。
1 ... 9  10  11  12  13  14  15  16  17  18 ... 177  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5620 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 47ms · UTC 03:25 · PVG 11:25 · LAX 19:25 · JFK 22:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.