1
eminemcola 2020-04-09 22:38:20 +08:00
SHA256 确实是一种 hash 呀
|
2
wsy2220 2020-04-09 22:39:10 +08:00
无言以对
|
3
luckyrayyy 2020-04-09 22:40:45 +08:00
安全散列算法(英语:Secure Hash Algorithm,缩写为 SHA )
散列和哈希和摘要,指的都是同一种东西吧。 |
4
chendy 2020-04-09 22:41:43 +08:00
SHA256 不是一种哈希算法?
|
5
revalue OP 上面好像打错了,“JWT 签名算法中,一般有两个选择,一个采用 HS256,另外一个就是采用 RS256 。”
|
6
yxwzaxns 2020-04-09 22:49:02 +08:00 via iPhone
老哥是搞前端的么,是的话可以理解你发的帖子
|
7
malusama 2020-04-09 22:49:18 +08:00
HS256 中用到的 SHA256 是否是一种哈希算法?
|
8
paragon 2020-04-09 22:49:36 +08:00
你都知道 JWT 是 JSON Web Token 难道不知道 HMAC 是 Hash-based message authentication code ?
|
10
HuHui 2020-04-09 22:51:42 +08:00 via Android
装逼失败了么?
|
11
hoyixi 2020-04-09 22:51:49 +08:00
很多东东,不翻译成中文,直接用英文,少了很多扯皮和迷惑
|
12
loading 2020-04-09 22:51:53 +08:00 via Android
被你这么一搅,我已经不懂 jwt 了。
|
14
wangyzj 2020-04-09 23:07:51 +08:00
习惯问题
md5 说成 hash 我也不习惯 |
15
Keyes 2020-04-09 23:16:19 +08:00 via iPhone
亲,咱们这边的建议去了解一下数字签名呢
|
16
Sunkz 2020-04-09 23:23:04 +08:00
数字签名 正解
|
17
ragnaroks 2020-04-09 23:29:52 +08:00
搜索的时候加上"-csdn"
|
18
upupddd 2020-04-10 01:26:55 +08:00 via iPhone
不 是时代变了
|
19
ipwx 2020-04-10 01:28:32 +08:00 1
数字签名:内容 + 根据内容算出来的签名码。签名码的计算方法各有不同,但是主旨都是为了保证只有内容的生产者才能计算出正确的签名码。篡改内容的人,无法为篡改后的内容算出正确的签名码。
HMAC 的签名码计算方法,粗略可以理解为:哈希函数(内容 + secret key) 当然还有别的计算方法。比如使用非对称加密。比如 RSA 签名:RSA 加密(内容) 最后就是,这个世界上有很多不同的已经被发明出来的哈希函数。除了已经被淘汰(比如 md5 ),还有 rsa256, rsa512 等等。 |
20
ipwx 2020-04-10 01:30:21 +08:00
补充:RSA 签名中,私钥用来加密,公钥用来解密。私钥只有内容生产者知道,公钥所有人都知道。私钥加密的信息只有公钥才能正确解开,反之亦然。篡改者不知道私钥,保证了他无法伪造签名。具体可以去了解一下 https 。
|
21
geelaw 2020-04-10 01:50:16 +08:00 1
@ipwx #19 #20 基于 RSA 签名算法并不是“用私钥加密”,根本没有“加密”的概念。
#0 JWT 不一定具有保密功能,不存在“密文”“加密”的概念。不过楼主有一部分说得没错,验证签名、消息验证码不需要使用 hash 函数,只不过真实世界里的签名、消息验证码都在某些步要用 hash 函数,因为不用 hash 函数的(可证明安全)方案实际效率令人无法忍受。 |
22
jss 2020-04-10 08:30:29 +08:00 via iPhone
256 不认识也就算了,SHA 不知道是什么?
|
23
KasonPasser 2020-04-10 08:50:50 +08:00
现在面试都是考这些基础性的东西了吗?
|
24
Jrue0011 2020-04-10 09:14:50 +08:00 1
我之前看 Spring Security 官方文档的时候,才知道 JWT 其实只是 JOSE 的一部分。。
JSON Web Token (JWT) JSON Web Signature (JWS) JSON Web Encryption (JWE) JSON Web Key (JWK) A JWT is a namedtuple result produced by either decrypting or verifying a JWE or a JWS 。。。 |
25
useben 2020-04-10 09:16:09 +08:00
面试还会问自己不熟悉的知识的? 难道真的只是问问
|
26
BlackBerry999 2020-04-10 09:34:42 +08:00
@ipwx 非对称加密 不是公钥加密,私钥解密吗?
|
27
BlackBerry999 2020-04-10 09:37:47 +08:00
@ipwx 我明白了,私钥加密是防篡改,公钥加密是防破解。
|
28
exploreXin 2020-04-10 09:43:56 +08:00 3
本想下笔千言,但是又不知道从何介绍起,《深入浅出密码学》,还是推荐楼主看下这本书,书名看起来有点像七天精通 XXX 的烂书,但实际上这是我读过最好的一本介绍密码学的书籍,里面既有易懂得密码学介绍,又有高深的数学理论,看不懂的可以暂时跳过,以后慢慢的反复阅读几遍,就能领会其中的奥秘了,万维网中的加密技术,都不会超出这本书的范畴,并且加密算法绝对不仅仅是 MD5,哈希这几个,加密算法多如牛毛,又复杂的,有简单的,有免费的,有收费的,哪个好哪个坏,只能在具体场景里去评判,才是最客观的。
|
29
shawndev 2020-04-10 09:56:09 +08:00
Secure Hash Algorithm 256, 这样能接受吗
|
30
xFrye 2020-04-10 10:22:02 +08:00 1
我好像理解了为什么有的人面试会觉得恼火
|
31
index90 2020-04-10 12:03:24 +08:00
应该说用到签名算法,哈希只是函数不是算法。
签名算法可以用 hash+id+secretkey+验证函数,也可以用 RSA 签名算法 |
32
Citrus 2020-04-10 12:55:19 +08:00 via iPhone
@exploreXin 我都不知道你是在黑这本书还是在夸。。。搞得我想买回来看看一探究竟。。。
|
33
shawndev 2020-04-10 13:08:53 +08:00
@index90 这种确定不是叫 hmac,hash based message authentication code 算法吗?
|
34
bk201 2020-04-10 13:12:07 +08:00
不太明白,自己原理都不懂,问啥原理?
|
35
mxT52CRuqR6o5 2020-04-10 13:24:15 +08:00
迷惑行为
|
37
exploreXin 2020-04-10 15:42:35 +08:00
@Citrus 可以买一本研究研究 ^_^
|
38
whoami9894 2020-04-10 15:50:06 +08:00
你可以这样理解 JWT:
jwt_payload = urlsafe_base64_enc(HEADER + DATA) + HMAC_SHA256(urlsafe_base64_enc(HEADER + DATA), SECRET_KEY) HMAC 的意义是保证了不知道 SECRET_KEY 的情况下可以拿到 DATA 明文,但无法篡改 当然这是 HS 的情况,另一种 RS 则是通过 RSA 私钥签名,公钥验证 |
39
whoami9894 2020-04-10 15:56:03 +08:00
@whoami9894 #38
笔误了 jwt_payload = urlsafe_base64_enc(HEADER + DATA) + urlsafe_base64_enc(HMAC_SHA256(HEADER + DATA, SECRET_KEY)) 当然这只是一个示例,实际上 JWT 是对 HEADER 和 DATA 分别编码,然后用"."连接三段 HEADER, DATA 和 SIGN |
40
changePro 2020-04-10 16:01:01 +08:00
"写了几年程序,最近面试几个新同学“ “密文” 哈哈哈哈,笑死我了。
|
41
revalue OP @whoami9894 @changePro jwt 用到的就是数字签名,其实没有产生需要被解密的密文。
上面说 HS 和 RS,区别就是签名的时候用的是 HMAC_SHA256 还是私钥签名。还有验签使用对应的手法就行了。 是这样么?基础不牢地动山摇 |
42
dongisking 2020-04-10 16:28:26 +08:00
本来我也想支持 LZ 的,看了这篇文章才知道 HS256 原来 H 就是 hash,长知识了哈哈
|
43
mtdhllf 2020-04-10 18:04:36 +08:00
你把 jwt 用 base64 解开,就能看到内容跟对应的 hash 指纹了如{hash:abcd,data:{我是数据}},hash 是后台通过算法生成的,一般都加了盐,不是标准算法.一旦前端改了,hash 值就会对不上,后台就会知道
|
44
Shura 2020-04-10 18:06:49 +08:00
写了几年程序不想着补一下基础吗?
|
45
jakezh 2020-04-10 18:29:37 +08:00 via iPhone
嗯 是遇到过不少不懂装懂的面试官
有一次遇到一个狂问 sql 的 结果我还得给他普及一下 B+树是什么 |
46
Newyorkcity 2020-04-10 19:11:00 +08:00
@Jrue0011 老哥你读文档有作笔记吗?它那个文档好长啊,读着读着我就忘记了连贯不起来了。。
|
47
holinhot 2020-04-11 04:43:49 +08:00
签名与校验
|
48
Jrue0011 2020-04-11 09:11:22 +08:00
@Newyorkcity 我没有。。。用到才去翻文档。。。
|