“转码”、“签名”和“加密”

作为开发人员,正确使用专业词语是一项基本功,也是表达能力的体现。错误的使用专业术语,可能会让面试官觉得你在不懂装懂,以至于错失心仪职位。

就我个人所见,有三个词最经常被错误使用,特别是初学者。那就是“转码”、“签名”和“加密”。

很多初学者把一段内容从看得懂的格式变为看不懂的格式,统统叫做“加密”,于是出现所谓“MD5加密”、“Base64加密”这类错误说法。本文将介绍“转码”、“签名”和“加密”三个概念的区别,以帮助初学者正确使用这些术语。

转码

转码是指将一段内容从一种编码转换为另一种编码。转码不会修改内容,其目的是为了满足内容传输格式的需要。

例如 Base64 编码,它可以将任何二进制内容转为 ascii 字符串,这样我们就可以在任何只允许传输字符串的协议中使用二进制内容了,传输协议的接收端收到 Base64 编码的内容,可以将其还原成二进制格式。

除此之外常见的转码还有 URL 编码和 hex 编码等等。他们的共同点是:内容可以根据约定的算法,在不同的格式间独立转换,也就是转换过程不需要借助额外的内容。

加密

上面说的独立转换,也就是转换过程不需要借助额外的内容,是什么意思呢?

加密也同样是一种格式转换,但转换的过程中就需要额外内容,也就是加密密钥。对应的,解密的时候也会需要解密密钥。

这就是转码和加密的区别。如果一个人把转码说成是加密,说明这个人在系统安全方面存在错误的理解,让其参与系统设计可能会影响系统的安全性。

签名

转码和加密都是可逆的,它们的目的都是保证内容在格式受到限制的条件下,能够完整的传输或存储。

但是签名就不一样了。签名的作用是用一份简短的内容来检查一份很长的内容是否正确。

例如通过 MD5 算法,可以将一个 1GB 大小的文件生成一个只有 32 字节长的 MD5 签名。一旦这个文件修改了任何一个字节,再次生成的 MD5 签名就会完全不一样。

到这你就能理解,为什么签名算法是不可逆的,你不可能将一个 32 字节的签名重新还原成一个 1GB 的文件。所以不管将签名当作是转码还是加密,都属于非常严重的误解。轻者你可能会只留下签名而删掉原内容,严重情况下,其他程序员会因为你不理解什么是签名而瞧不起你。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值