Algorithms
本周算法题:
Roman to Integer
注:本题解法来自以下两个文章:
http://www.cnblogs.com/grandyang/p/4120857.html
https://www.jiuzhang.com/solution/roman-to-integer/#tag-highlight-lang-cpp
学习到罗马数字的使用方式,之前对此没有细致的了解。
1 | class Solution { |
Longest Common Prefix
思路:从第一个字符开始找,如果全部相同,继续查找下一个字符,直到遇到不同的字符。
1 | class Solution { |
Review
本周阅读英文文章Password and Credential Management in 2018
如果密码能够任意长,在使用PBKDF2算法时会增加所需的时间和计算资源,可以通过重复提交长密码来进行Dos攻击。
在用户登录时,从数据库加载加密的哈希值,使用Vault对其解密,并将其与生成的哈希值进行比较以进行身份验证时,建议进行constant time comparison。
constant time comparison相关:
https://codahale.com/a-lesson-in-timing-attacks/
https://crypto.stackexchange.com/questions/39429/why-not-use-or-in-constant-time-comparison
Key derivation function
Argon2
bcrypt
scrypt
PBKDF2
Technique
在阅读《HTTP/2基础教程》中学习到使用OpenSSL来调试HTTP/2。
OpenSSL命令:
1 | echo | openssl s_client -connect akah2san.h2book.com:443 -servername akah2san.h2book.com -alpn spdy/2,h2,h2-14 | grep ALPN |
显示:
1 | $ echo | openssl s_client -connect akah2san.h2book.com:443 -servername akah2san.h2book.com -alpn spdy/2,h2,h2-14 | grep ALPN |
其中| grep ALPN
会过滤输出。如果省略这个命令,可以看到openssl s_client
这个命令的所有输出,其中包含调试TLS配置的相关信息。完整的输出里面包含证书链、证书、协商使用的加密协议,还有其他各种细节。可以将书中例子akah2san.h2book.com替换为百度和必应体验一下:
1 | $ echo | openssl s_client -connect www.baidu.com:443 -servername www.baidu.com -alpn spdy/2,h2,h2-14 | grep ALPN |
Share
本周分享在nosec看到的文章: 安装Python库时执行任意代码