V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 56 页 / 共 177 页
回复总数  3536
1 ... 52  53  54  55  56  57  58  59  60  61 ... 177  
2019-09-28 12:18:59 +08:00
回复了 anhkgg 创建的主题 程序员 程序员对私密聊天的乱想
您似乎没有弄明白 RSA 和 DH 的关系。

您链接文章里似乎暗示 Z_p^* 里 decisional Diffie-Hellman 成立——这是不对的,在 Z_p^* 里 DDH 不成立,用整数取模计算的时候应该选择安全质数 p=2q+1,并使用 Z_p^* 的 q 阶子群(因此使用 23、5 作为例子也是误导性的)。以及对困难性的理解也不太对,因为计算 a、b 没有什么用,攻击者需要考虑的是如何计算 g^(ab)——这并不非要计算 a、b。

另外您也没有公布您使用的是什么(对称)加密算法,通常来说这样默认安全性是 0。
Chrome 把 Windows 的亮暗主题色 translate 成了 CSS media query。
2019-09-25 23:10:53 +08:00
回复了 tt131178 创建的主题 Python 求助贴:如何解决每天重复往 word 模板填数据?
我觉得尝试用第三方工具解析 Word 都是很诡异的思路,不考虑兼容性问题,也是直接用 Word COM 更简单。想要用 VBA、C++、Python 还是 PowerShell 都可以。
2019-09-22 21:56:19 +08:00
回复了 codechaser 创建的主题 程序员 求解答一道算法题
最直接的思路是区间动态规划,自然需要的时间是 n^3,空间是 n^2。
稍微思考可以只考虑开头的区间,时间是 nlogn,额外空间是 1。

具体做法留作习题。
2019-09-21 12:08:11 +08:00
回复了 noming 创建的主题 问与答 菜鸟请教正则表达式问题
@xml123 #9 startendend 会拿到太长的结果。

@ipwx #11 对于我来说零宽断言不够“纯粹”。

而且重点是方法很简单(结果确实很复杂),所谓“理论帮助思考”,是指思考的很大一部分负担由理论内部所消化——类似于使用方程比算术方法简单,“条件表达为方程”(建立一个 (G)NFA )以及“解方程”(把 (G)NFA 转换为正则表达式)中,前者是比直接想出反向的算式简单的,后者是机械的。

至于为什么直接写一个正则表达式更加困难,是因为正则表达式中对补集、交集的表达力比较弱(纯粹的正则表达式根本没有这些功能,比如计算一个正则表达式识别的语言补的正则表达式,是没有什么很直接的办法的),而 (G)NFA 表达这些很容易。

#18 见 https://gist.github.com/GeeLaw/be3aec94a6ba7c3817ef2e16d261f616

@noqwerty #10 startendstartend 会只能拿到第二个匹配。
2019-09-21 07:34:02 +08:00
回复了 noming 创建的主题 问与答 菜鸟请教正则表达式问题
呃,上面那个似乎有错误,正确的结果应该是:

start((e(ne|e)*(ns|s)|s)(t(a(r(e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)*(t(a(r(e(ne|e)*(n[^sed]|[^sen])|[^set])|e(ne|e)*(n[^sed]|[^sen])|[^ser])|e(ne|e)*(n[^sed]|[^sen])|[^sea])|e(ne|e)*(n[^sed]|[^sen])|[^set])|e(ne|e)*(n[^sed]|[^sen])|[^se])*((e(ne|e)*(ns|s)|s)(t(a(r(e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)*(t(a(re(ne|e)*nd|e(ne|e)*nd)|e(ne|e)*nd)|e(ne|e)*nd)|e(ne|e)*nd)
2019-09-21 07:30:27 +08:00
回复了 noming 创建的主题 问与答 菜鸟请教正则表达式问题
用理论帮助思考,考虑一个 NFA,它的状态是
x/s/st/sta/star/start/starts/startst/startsta/startstar/startstart/starte/starten/startend
你希望这个机器接受 start 开头 end 结尾且中间没有 start 或者 end 的字符串,初始状态是 x。

用 q+r = q' 表示 q 之后看到 r 就进入 q',只有 startend 是接受状态

读入最开始的 start:
x+s = s
s+t = st
st+a = sta
sta+r = star
star+t = start

中间可能出现 start:
start/starts/startst/startsta/startstar/starte/starten+s = starts
starts+t = startst
startst+a = startsta
startsta+r = startstar
startstar+t = startstart

中间可能出现 end:
start/starts/startst/startsta/startstar/starte/starten+e = starte
starte+n=starten
starten+d=startend

任何其他字符:
start+[^se] = start
starts+[^set] = start
startst+[^sea] = start
startsta+[^ser] = start
startstar+[^set] = start
starte+[^sen] = start
starten+[^sed] = start

通过 NFA 转换为正则表达式的算法得出一个写法是这样的

start((e(ne|e)*(ns|s)|s)(t(a(r(t(e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)*(t(a(r(te(ne|e)*(n[^sed]|[^sen])|e(ne|e)*(n[^sed]|[^sen])|[^set])|e(ne|e)*(n[^sed]|[^sen])|[^ser])|e(ne|e)*(n[^sed]|[^sen])|[^sea])|e(ne|e)*(n[^sed]|[^sen])|[^set])|e(ne|e)*(n[^sed]|[^sen])|[^se])*((e(ne|e)*(ns|s)|s)(t(a(r(t(e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)*(t(a(r(te(ne|e)*nd|e(ne|e)*nd)|e(ne|e)*nd)|e(ne|e)*nd)|e(ne|e)*nd)|e(ne|e)*nd)((.(e(ne|e)*(ns|s)|s)(t(a(r(t(e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)*(t(a(r(te(ne|e)*(n[^sed]|[^sen])|e(ne|e)*(n[^sed]|[^sen])|[^set])|e(ne|e)*(n[^sed]|[^sen])|[^ser])|e(ne|e)*(n[^sed]|[^sen])|[^sea])|e(ne|e)*(n[^sed]|[^sen])|[^set])|.e(ne|e)*(n[^sed]|[^sen]))((e(ne|e)*(ns|s)|s)(t(a(r(t(e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)*(t(a(r(te(ne|e)*(n[^sed]|[^sen])|e(ne|e)*(n[^sed]|[^sen])|[^set])|e(ne|e)*(n[^sed]|[^sen])|[^ser])|e(ne|e)*(n[^sed]|[^sen])|[^sea])|e(ne|e)*(n[^sed]|[^sen])|[^set])|e(ne|e)*(n[^sed]|[^sen])|[^se])*((e(ne|e)*(ns|s)|s)(t(a(r(t(e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)*(t(a(r(te(ne|e)*nd|e(ne|e)*nd)|e(ne|e)*nd)|e(ne|e)*nd)|e(ne|e)*nd)|e(ne|e)*nd)|.(e(ne|e)*(ns|s)|s)(t(a(r(t(e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)|e(ne|e)*(ns|s)|s)*(t(a(r(te(ne|e)*nd|e(ne|e)*nd)|e(ne|e)*nd)|e(ne|e)*nd)|e(ne|e)*nd)|.e(ne|e)*nd)*
2019-09-19 23:02:05 +08:00
回复了 sunkezheng 创建的主题 问与答 hexo 两台电脑之间数据迁移(同步)🤔
因为增加文件同步功能不符合去耦合原则。
2019-09-18 16:19:25 +08:00
回复了 Samuel021 创建的主题 问与答 人为什么要工作呢?
第一个原因是资本主义的原因,第二个原因是共产主义的原因。
@Raymon111111 #4 楼主的错误还没发展到这么高级的阶段,他的错误在于选择一个非主流的 **算法**,而不是选择一个非主流的 **实现**。

@claymore94 #27 评论是否安全不需要知道怎么做才安全。

此外,证明一个东西不安全是一件非常容易的事情。
具体到楼主的方案,你可以参考任何一个本科生密码学课程的前两节课的内容。
一个简单的提示是这样的:QQ 号码是多位数字,因此可以把位移量缩小到一个非常小的范围内,接下来再结合其他用户名的有意义性就差不多可以算出位移量,因此可以从楼主的密文中还原出所有的密码。
这是一个惟密文攻击下不安全的方案——现代安全工具通常使用的是选择密文攻击下安全的方案。

@claymore94 #48 加密算法的安全性不应当依赖于明文(这里就是你需要加密的密码)的随机性,任何选择明文攻击下安全的加密方案,加密 1111111111111 和 s$Kf5%i&e?gfu 之后都是无法辨别的。
至于密码本身是弱密码容易被攻破,那并不是通过你的密码管理器攻破的,和你的密码管理器没有关系。

@claymore94 #63 我没有用过任何密码管理器,但我相信几乎所有的密码管理器的算法都是公开的,云端存储并不会包括密钥,加上加密算法的安全性,可以相信厂商并没有解密的能力。

@libook #64 并不需要是密码学博士,需要的是密码学知识,以及能够在久经考验的假设下形式化证明安全性。

最后回复附言:
> 我自己用吧,用自己的作品还是很开心的。

我在 1 楼的建议也适用于楼主本人。或许用自己写的密码管理器很开心,但是这个密码管理器非常不安全。当然本身的不安全性也不是什么巨大的实际威胁,只要你愿意相信 Tencent 不会偷看你的内容;真正的威胁是虚假的安全感。
@geelaw *离安全差十万八千里
我强烈建议任何觉得自己的账户应该保密的人不要用这个软件。

这个加密方法里安全差十万八千里。
2019-09-14 00:36:04 +08:00
回复了 Mrzhs 创建的主题 问与答 向国外账户汇款,如何将汇款手续费降到最低?
@alphatoad #4 贵的是 130 块钱的额外费用,类似于花了 5 块钱买的东西运费要 10 块钱的运费。
2019-09-07 08:05:42 +08:00
回复了 fenghuang 创建的主题 程序员 问大家一个面试题
这是一个非常简单的 DPDA,用一个带有左右孩子和亲代节点指针的结构,从一个单独的根开始。
遇到数字:设置当前节点的值。
遇到左括号:建立并进入左子树。
遇到逗点:回到亲代,如果左子树没有值则删除之,建立并进入右子树。
遇到右括号:回到亲代,如果右子树没有值则删除之。
2019-09-06 18:00:07 +08:00
回复了 Track13 创建的主题 问与答 你们的中学计算机课有教东西吗?
@geelaw #44 似乎叫“世纪杯”,不知道是海淀区还是有更大范围的。
2019-09-06 17:58:13 +08:00
回复了 Track13 创建的主题 问与答 你们的中学计算机课有教东西吗?
小学课程教 Windows 操作、打字、Office 简单操作以及互联网的使用,课外班可以选择学习 Flash、Dreamweaver、Photoshop 等。课外活动有 Intel 求知计划(似乎是 Excel 和 PowerPoint 的应用)以及 21 世纪小学生计算机知识竞赛(似乎是 Office 的使用和打字为主)。

初中似乎教的是 Photoshop 或者 VB6,但我免修所以不太清楚。

高中教的是 C++ (入门编程而不是入门 C++)。我记得高中有考试但是很简单。

2002 年上小学的版本了。
2019-09-06 17:52:37 +08:00
回复了 jinde1573 创建的主题 Apple 问下大家, iOS 自带邮件应用不能推送吗
@luojianxhlxt #12 移动平台秒推是因为有服务器帮你看了邮件推送过来的,Windows 桌面版的 Outlook 是通过 IMAP/POP 或者是 Exchange、Exchange ActiveSync 收取邮件的,后两者有推送,但是是通知客户端新的邮件,而不是类似 APNs、WNS 的发送一个可以显示的通知,Outlook 桌面版收到推送后必须把邮件下载下来才会弹出 toast notification。
自己处理复制就行了。
2019-09-05 20:07:27 +08:00
回复了 Buges 创建的主题 Visual Studio Code 微软 VS Code“半开源”的操作属实不地道
这也不新鲜,想要一个可以自己用的可以自己写。

另外,感觉有必要提醒一下:直接下载 VSCode 的安装器 和 从源代码构建 的 VSCode 不止是遥测数据收集行为不同,许可证也是不同的。
直到 Edge 支持 MSHTML 那堆 COM 接口之前,微软不可能放弃 IE。
1 ... 52  53  54  55  56  57  58  59  60  61 ... 177  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2532 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 45ms · UTC 10:59 · PVG 18:59 · LAX 02:59 · JFK 05:59
Developed with CodeLauncher
♥ Do have faith in what you're doing.