什么是hash?

今天在 JavaScript 浏览器环境概述 中看到以下描述,因此特意去了解了什么是hash.


为了防止攻击者篡改外部脚本,script标签允许设置一个integrity属性,写入该外部脚本的Hash签名,用来验证脚本的一致性。

<script src="/assets/application.js"
  integrity="sha256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs=">
</script>

上面代码中,script标签有一个integrity属性,指定了外部脚本/assets/application.js的SHA265签名。一旦有人改了这个脚本,导致SHA265签名不匹配,浏览器就会拒绝加载。


笔记:
通俗来说,hash算法会把一段内容经过计算后转化为一串固定长度的值,特点是不同内容 a 和 b 转化得到的 hash 值相同的概率非常小,因此这段 hash 值可以看做是 a 或者  b 的指纹。


如上文提到的SHA265转换

‘test1’ 转换值 ‘1B4F0E9851971998E732078544C96B36C3D01CEDF7CAA332359D6F1D83567014’;

‘test2’ 转换值 ‘60303AE22B998861BCE3B28F33EEC1BE758A213C86C93C076DBE9F558C11C752’;


即使只变了一个数字,得到的hash值差别也是很大的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值