V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 11 页 / 共 177 页
回复总数  3521
1 ... 7  8  9  10  11  12  13  14  15  16 ... 177  
@ysmood #28

第二个问题,似乎你没有理解第一个攻击例子的场景:A 要和 B 说话,B 选择去听任何人的话,M 达成的效果是 M 不知道 A 想说什么,但是让 B 以为 M 说了 A 本来要说的话。B 是用 M 的公钥验证的。

另外加密算法的安全性不是用思考具体攻击方案的方式考虑的,复合两个安全的算法也不一定达成两者安全性的“复合”。通行的做法是归约,你的算法可以看作某种安全性的 KEM 和 CPA 安全的私钥加密和签名的复合,无法推出第一个例子下的安全性。

当然,你并没有说明你的算法期待达成何种安全性,因此我考虑的是两个人之间的对话是 authenticated channel 版本的安全性,这通常需要采用 CCA 安全的加密算法。
@ysmood #25

第一个问题,我不知道有没有风险,但是这会导致没有选择超过 128 位密钥的意义,限制了最大安全性。

第二个问题,对密文签名只能保证密文“被谁同意”,不能保证明文来自于谁,也不能保证密文在加密结束之后没有被“有意义地修改过”,后者是选择密文安全性的要求。

“明文来自于谁”的攻击:A 向 B 发送消息 X ,经过加密得到 C ,再对 C 签名得到 D ,并通过网络发送 D ,使坏者 M 截获 D 并拿出 C ,然后重新以 M 的身份签名 C 得到 E ,发送 E 给 B 。

假设 B 公开接受任何人 Y 的消息 Z ,如果 Z 包含了某个密码,则允许 Y 获得权限。上述场景中 A 知道密码但 M 不知道,但 M 可以获得权限。

“修改密文”的攻击:类似上面的,但重新签名之前修改 C 获得 C' 并对 C' 签名。

除非收信人只收取某个特定的人(以签名所用的公钥识别)的信息(因此 M 重新签名不会被接受),否则上述场景可以成立。但如果收信人只收取特定的人的信息,则没必要每次通信都用公钥加密。
@ysmood #5

你的第一段回复表明确实弄混了块长度和密钥长度,AES 的块长度永远是 128 位,密钥有三种长度。不存在“选择”块长度这种操作,因为没的可选。

第二段回复表明没理解什么是选择密文安全性。把公钥加密和 AES 以 OFB 模式(不是选择密文安全)结合时当然不可能期待选择密文安全性。
随便看了几眼,看起来有如下问题:

- 弄混了 AES 块长度和密钥长度,并且不知为何要先对随机数取 MD5 再当作 AES 密钥
- 加密算法看起来没有保证选择密文攻击下的安全性
- 引用 RFC 4880 Sect. 5.13 以论证合理性的部分似乎没有起到密码学安全性(所引用段落的目的)的作用
338 天前
回复了 dumbbell5kg 创建的主题 程序员 一个逻辑直觉的问题
@yxd19 #10 我并不是这么理解的,楼主的话的意思显然是编译器认为 b1 是恒为 true ,这才是让我惊讶的点——因为我以为编译器不会追踪集合是否是空。

此外就是这段代码看起来像 Java ,而我以为 Java 编译器不会做这么多的检查,尤其是 x 的静态类型上的 getProcessStatus 非常可能不是密封(最终)方法,从而不能假设是无副作用,对它静态分析非常困难。

但总之,我的第一条回复的另一层含义是楼主说话应该把上下文说清楚。

另外怎么突然用清朝微积分语言(?
338 天前
回复了 GopherDaily 创建的主题 Go 编程语言 Go: For-Loop-Variable 适合面试的小问题
@yxd19 #25 你可能没有仔细阅读楼主的内容,请看第三段代码片段,那里面没有闭包。
338 天前
回复了 dumbbell5kg 创建的主题 程序员 一个逻辑直觉的问题
@yxd19 #7 我不确定你为什么会认为名字类似 getProcessStatus 的方法是无副作用的,举个非常自然的例子,如果 x 对象基于操作系统级别的进程,那么 getProcessStatus 很可能每次调用的时候都会检查操作系统级别的进程是否结束,并根据操作系统级别的进程的结束状态(还在运行、以 0 退出、以 1 退出、以其他返回值退出)决定返回值。调用操作系统级别检查进程状态的 API 相当于某种同步 (synchronization) 操作,永远属于有副作用操作。

从您打人的条件来看,似乎光是把 complete/close 写成小写就可以发动您打人的动作了?实际上,同一个数值具有多个不同的同类型枚举名字的状况不少见。我想没有什么人在“正经”的程序里用 xs.anyMatch(x -> true) 判空,但不代表它的行为不是如此。

另外您似乎忘了:当下的主题是形式逻辑,不是编程最佳实践。
338 天前
回复了 GopherDaily 创建的主题 Go 编程语言 Go: For-Loop-Variable 适合面试的小问题
@GopherDaily #14 错误的方式可以有很多,没有必然理由认为你的错误答案程度更轻,建议不要和别人玩“揣摩出题人意思”的游戏。

#15 你可能没有理解我的意思。

>我们在下述例子中看到, i 和 v 的内存地址始终未曾改变: ...
>另外 i 和 v 的地址未曾改变不能证明任何事情,即使每次迭代的变量是新的,编译器也可以证明复用旧的内存位置没问题,于是优化之后会看到相同的地址。

引述第一段内容,阅读后揣摩得出:这段话是想要通过地址不改变 (A) 证明迭代变量每次都是同一个 (B),即论证 A => B ,并观察到 A ,因此推出 B 。
引述第二段内容,意思是 A => B 的论证不恰当,并不是说 A => B 这个命题本身不真。

换言之,A 对论证 B 是无意义的,论证 B 的惟一方式是阅读 Go 的定义。
338 天前
回复了 dumbbell5kg 创建的主题 程序员 一个逻辑直觉的问题
这段代码不能推断任何事情——都不知道 scopes 、x 、complete 、close 是什么!假设 scopes.stream() 是 sensible 的。

如果 scopes 是空集,则 anyMatch 当然永远是 false 。
如果 scopes 不是空集,那么 getProcessStatus() 可能有副作用,连续调用两次不一定返回相同的数值。
我们也不知道 complete 和 close 是不是相等。

如果假设 getProcessStatus() 无副作用,且 complete 和 close 不相等,那么 b1 的结果等于 scopes 是否是空,这依然是非平凡的,除非上文里编译器可以推断 scopes 非空。

培养逻辑直觉的第一步是放弃错误的直觉(也就是所谓的“想当然”)。
338 天前
回复了 GopherDaily 创建的主题 Go 编程语言 Go: For-Loop-Variable 适合面试的小问题
随便看了一下文档,正确答案不是“乱序输出三个数字”,而是“乱序输出三个数字或者程序在不知道什么时候崩溃”。

https://go.dev/ref/mem

> While programmers should write Go programs without data races, there are limitations to what a Go implementation can do in response to a data race. An implementation may always react to a data race by reporting the race and terminating the program. Otherwise, each read of a single-word-sized or sub-word-sized memory location must observe a value actually written to that location (perhaps by a concurrent executing goroutine) and not yet overwritten.

另外 i 和 v 的地址未曾改变不能证明任何事情,即使每次迭代的变量是新的,编译器也可以证明复用旧的内存位置没问题,于是优化之后会看到相同的地址。
341 天前
回复了 WJC5197 创建的主题 Windows 英文版 windows 11 中文字体粗细不一怎么解决
是因为默认的字体兜底顺序先考虑日文字体。

解决方法是在数据中(比如 HTML lang 或者 font-family )指定正确的语言、字体兜底,以及使用正确编程的程序。
目测 mt_rand(10000000, 99999999) 的输出一定以 1 开始,那自然不是均匀随机的 8 位纯数字序列号(当然 MT 本身就不够随机,但这是另一码事儿了),毕竟均匀随机的 8 位纯数字序列号以 1/10 的概率以 0 开始。

对这个分布套上 str_shuffle 是会“变得更随机”(增加分布的熵)的,但 str_shuffle 之后得到的依然不是八位纯数字序列号,因为它不可能是 00000000 ,而真正随机的以 10^(-8) 的概率出现 00000000 。

如楼上 @maggch97 所说,这个数据范围出现碰撞的概率不小。最简单的做法是:预先生成好 0 到 99999999 的一个置换(打乱一个 0 到 99999999 的列表,并存下来),然后每次需要的时候取用。
342 天前
回复了 summerLast 创建的主题 分享创造 RSS 阅读器增加朗读功能
@summerLast #4 我的意思是,想要听到屏幕上显示的东西,在 macOS 下只要打开 VoiceOver 就行了。
@ysc3839 #19 如果是 Windows 95 以前,那么最小化的窗口就在原地,从 Windows 95 以来的非 NT 系统采用的是 (3000, 3000),然后 NT 系列是 (-32000, -32000)。

回到楼主的提问,我记得 Windows 7 的时代是可以假装有外接显示器的。但如果单纯想让窗口在屏幕外,那任意版本的 Windows 好像都可以。

回到歪楼的内容,Windows 10 Mobile 也支持外接显示器显示不同内容。
342 天前
回复了 summerLast 创建的主题 分享创造 RSS 阅读器增加朗读功能
是“小而美”(反语),这个功能属于读屏器的生态位,没必要在 RSS 订阅与展示工具里再写一次,除非这个阅读的语音是人类录制而不是计算机生成的。
你引用的 CSDN 文章已经说了要加上 256 是错误的。

问 ChatGPT 得到的答案不可靠,尤其是带着具体细节提问的时候,因为 ChatGPT 一容易编造内容,二容易“讨好”用户,用户尝试错误地更正它的回复的时候,它很容易“好好先生”地同意用户的说法——如果你问 ChatGPT 为什么要做 XYZ ,那么它很可能不会考虑这是否是伪命题(即实际上可能不需要做 XYZ )。
企业邮箱就是设计给企业用的邮箱,一般有很多企业会用到的功能,比如:多用户,权限代理(秘书可以读取老板的邮件来协助处理),管理员可以重置任意用户的密码,设置数据保留策略(彻底删除的邮件实际上必须过一段时间才真正彻底删除),电子文书提出(所谓 eDiscovery )等。绑定自定义域名也是企业邮箱的常见功能之一。

企业邮箱的数据所有者通常是客户企业(一个法人),而不是客户企业的员工(通常使用邮箱的那个自然人),通常对于数据的 safety 可以通过合同约束服务提供方。
个人邮箱的数据所有者通常是客户,对于数据的 safety ,服务提供方通常是无责任的(格式条款)。

提前解释:safety 是指数据不丢失的性质,security 是指数据不被别人查看的性质。
345 天前
回复了 faketemp 创建的主题 Windows 如何修改注册表增加右键菜单项?
@geelaw #3 哦,不必这么麻烦了……可以用 IExplorerCommand 接口,用 GetState 可以决定是否显示。

如果你不需要“在没有 .heic 时不显示”这个效果,那么可以用 IDropTarget 。

这两种方法都要求写代码,而不仅仅是修改注册表。
345 天前
回复了 faketemp 创建的主题 Windows 如何修改注册表增加右键菜单项?
可能是 IContextMenu 系列接口
1 ... 7  8  9  10  11  12  13  14  15  16 ... 177  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2823 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 12:02 · PVG 20:02 · LAX 04:02 · JFK 07:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.