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

news/2024/7/7 21:33:55

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

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

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

转码

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

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

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

加密

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

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

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

签名

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

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

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

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


http://www.niftyadmin.cn/n/4616344.html

相关文章

mysql 起别名报错_MySQL 查询取别名报错

MySQL 查询取别名报错一, 问题背景查询语句 sql:"select b.city_unit_name as disposeunitname,a.city_event_src_name as eventsrcname from to_stat_info t,to_trans_event_src a,to_trans_unit b where t.event_src_namea.event_src_name and t.dispose_unit_name b.u…

使用Echarts的五个步骤

_liuz 2015-07-22 09:35:53 参考网址&#xff1a;http://echarts.baidu.com/doc/start.html一、制作一个图表容器<div id"main" style"height:400px;"></div>二、引入echarts.js文件<script src"http://echarts.baidu.com/build/dist/…

eclipse使用小技巧

1. eclipse自带内存监视及回收插件 菜单 Window > Preferences > General > 右边&#xff0c;把 Show Heap Status 打上勾就会在右下角任务栏显示内存监视器,并且可以点击内存回收。 2. http://www.eclipse.org/downloads/3. 摘录热键篇&#xff1a;Template&#xff…

机器学习--聚类系列--DBSCAN算法

DBSCAN算法 基本概念:(Density-Based Spatial Clustering of Applications with Noise) 核心对象:若某个点的密度达到算法设定的阈值则其为核心点。(即 r 邻域内点的数量不小于 minPts)    ε-邻域的距离阈值:设定的半径r    直接密度可达&#xff1a;若某点p在点q的 r…

JS:window.onload的使用介绍

作者&#xff1a; 字体&#xff1a;[增加 减小] 类型&#xff1a;转载 时间&#xff1a;2013-11-13 我要评论 window.onload在某些情况下还是比较实用的&#xff0c;比如加载时执行哪些脚本等等&#xff0c;下面有几个不错的示例&#xff0c;需要的朋友可以参考下1、最简单的调…

JavaScript 函数—函数调用

JavaScript 函数有 4 种调用方式。 每种方式的不同在于 this 的初始化。 一、作为一个函数调用 以上函数不属于任何对象。但是在 JavaScript 中它始终是默认的全局对象。 在 HTML 中默认的全局对象是 HTML 页面本身&#xff0c;所以函数是属于 HTML 页面。在浏览器中的页面对象…

浅谈html5 响应式布局

一、什么是响应式布局? 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念&#xff0c;简而言之&#xff0c;就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。 这个概念是为解决移动互联网浏览而诞生的。响应式布局可以为不同终端的用户提供更加舒适…

虚拟化—用新的视角看IT

今天晚上我们都在讲云&#xff0c;相信大家已经很清楚什么是内部云、外部云、混合云&#xff0c;既然我们已经有了这样一个前期的概念&#xff0c;那么我们怎么样走上云之路?这边有个很好的新闻&#xff0c;不知道大家有没有关注&#xff0c;是讲VMWARE和美国著名的电信运营商…