日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

如何区分加密、压缩、编码?

發(fā)布時(shí)間:2024/1/8 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何区分加密、压缩、编码? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文標(biāo)題:How to distinguish between encryption, compression, and encoding?
原文作者: M157q
譯文出自:云子可信官方論壇
本文永久鏈接:https://bbs.cloudtrust.com.cn/thread-349-1-1.html
譯者:云子可信漢化組

前言

base64加密?base64壓縮?base64編碼?傻傻分不清?
究竟:

  • 加密(Encrypt)
  • 壓縮(Compress)
  • 編碼(Encode)

到底有什么差別?明明不管是中文還是英文,這3個(gè)詞長(zhǎng)得一點(diǎn)都不像,那到底為什么很多人會(huì)把這3種東西都當(dāng)成加密呢?主要是因?yàn)橥高^(guò)這3種方式處理過(guò)后的資料,都會(huì)長(zhǎng)的跟原本不一樣,一般人無(wú)法直接辨別,就覺(jué)得是被加密處理過(guò)的密文天書(shū)。然而,并不是變成人看不懂的東西就叫作「加密」。

如果誤用的話(huà),很有可能你自以為加密了的東西,
實(shí)際上并沒(méi)有經(jīng)過(guò)加密處理,隨隨便便就可以被懂其中差異的人拿到你寶貴的原始文字(最有可能的就是你的密碼啦)。以下就來(lái)簡(jiǎn)單說(shuō)明這3種東西各自的特性,會(huì)特別拿base64來(lái)說(shuō),希望能夠端正一下視聽(tīng)。

加密(Encryption)

特性
首先得產(chǎn)生一個(gè)新的字串作為密鑰,也就是一把鑰匙。

原文與密鑰作為加密演算法的輸入,得到的輸出即為加密過(guò)后的密文。

可以想像成,加密演算法幫你打造出你給它的這把密鑰才可以開(kāi)啟的寶箱,幫你把原文放入寶箱后,用這把密鑰上鎖,上鎖后的寶盒就是密文,看不到里面的東西是什么。
這種只有一把鑰匙的加密演算法被稱(chēng)為對(duì)稱(chēng)式加密(Symmetric Encryption)。

問(wèn)題也很明顯,要是你沒(méi)有保管好你的鑰匙,或者你的鑰匙構(gòu)造太簡(jiǎn)單被人打造出一模一樣的鑰匙,別人就可以打開(kāi)寶箱,拿到內(nèi)容物。

比如說(shuō)你的密鑰是一個(gè)叫作"5566" 的字串,因?yàn)樘貌铝?#xff0c;所以很容易被解密回來(lái)。
這也是為什么通常在生成密鑰的時(shí)候會(huì)建議長(zhǎng)度愈長(zhǎng)愈好,尤其現(xiàn)在電腦的運(yùn)算能力愈來(lái)愈強(qiáng),以往透過(guò)程式一個(gè)一個(gè)暴力猜測(cè)密鑰的方式,在相同單位時(shí)間內(nèi)可以猜的數(shù)量變多了,密鑰長(zhǎng)度太短的話(huà),很容易就被猜到。

因?yàn)閷?duì)稱(chēng)式加密的安全性以及在實(shí)際應(yīng)用上不夠理想,于是乎,出現(xiàn)了安全性更高,應(yīng)用范圍更廣的非對(duì)稱(chēng)式加密(Asymmetric Encryption)。

非對(duì)稱(chēng)式加密演算法會(huì)有兩把鑰匙,一把稱(chēng)做公鑰(可以公開(kāi)),另一把稱(chēng)做私鑰(自己要藏好)。

非對(duì)稱(chēng)式加密除了可以做到加密以外,還可以生成數(shù)位簽章,確認(rèn)密文的傳送方身份真的是本人,這篇不會(huì)細(xì)談。

但這并不代表對(duì)稱(chēng)式加密就沒(méi)有人用,兩者各有各的優(yōu)缺點(diǎn),所以實(shí)際應(yīng)用上通常都是視情況而定,常常會(huì)有兩者一起使用的情形。

常見(jiàn)演算法

  • 對(duì)稱(chēng)式:DES, 3DES, AES
  • 非對(duì)稱(chēng)式:RSA, DSA, ECC

結(jié)論

  • 沒(méi)有這把鑰匙(無(wú)論是拿到或猜到)就無(wú)法得知真正的訊息。
  • 使用base64 的時(shí)候不需要密鑰,而且任何人編碼的base64訊息,任何人都可以經(jīng)過(guò)base64 解碼回來(lái),所以base64 不是加密。

壓縮(Compression)

特性

輸入(通常是檔案)經(jīng)過(guò)壓縮演算法后得到的輸出,大小比輸入來(lái)得小。
根據(jù)有無(wú)失真又區(qū)分為非破壞性(無(wú)損)壓縮與破壞性(有損)壓縮:

  • 無(wú)損壓縮:無(wú)失真、壓縮率沒(méi)辦法到太高,通常用在文件檔案這種不能缺少原始資料的東西。
  • 有損壓縮:失真、壓縮率可以比較高,通常用在圖片、視訊、音訊,因?yàn)榭梢匀サ羧搜刍蛉硕鸁o(wú)法辨認(rèn)出差異的部份,降低檔案大小可以有效提升傳輸時(shí)的效率。

常見(jiàn)演算法
zip, gzip, rar, 7zip, jpg, mp3, mp4, Huffman coding

結(jié)論

  • 沒(méi)有讓輸出比輸入小的演算法就不是壓縮。
  • 經(jīng)過(guò)base64 編碼后得到的結(jié)果,實(shí)際上會(huì)比原檔案多三分之一左右,所以base64 不是壓縮。
  • base64 使用64 個(gè)可顯示的ASCII 字元來(lái)表示二進(jìn)位資料。
  • 2^6 = 64,也就是一個(gè)base64單元表示6位元,即用1個(gè)ASCII字元(8 bits),表示6 bits資料,比例為4:3,也就大概多了1/3出來(lái)。

那為什么很多地方會(huì)提到在網(wǎng)頁(yè)上用base64 表示圖片可以加速?

主要是因?yàn)榘褕D片直接以base64 字串的形式呈現(xiàn)在網(wǎng)頁(yè)上的話(huà),就不需要額外再發(fā)request 去要圖片。但因?yàn)閎ase64 會(huì)把檔案變大不少,所以很多人會(huì)先把圖片經(jīng)過(guò)gzip 壓縮后,再編碼成base64 字串。

編碼(Encoding)

編碼牽涉的范圍非常廣包含了:字元編碼(Character Encoding)、音訊編碼(Audio Encoding)、視訊編碼(Video Encoding)……等等,所以在這篇文章不會(huì)仔細(xì)講。 其實(shí)廣義上來(lái)說(shuō),上述提到的加密與壓縮都算是編碼的其中一種, 但這里就把上述兩個(gè)排除。

特性

  • 將原文轉(zhuǎn)換成另外一種表達(dá)方式。
  • 不需要密鑰,只要知道你用哪個(gè)編碼演算法,任何人都可以解碼。
  • 這也是單純編碼被拿來(lái)誤用成加密演算法最危險(xiǎn)的地方,因?yàn)橥耆恍枰〞r(shí)間猜密鑰。

不同的編碼演算法有不同的特性

  • 錯(cuò)誤偵測(cè)(Error Detection)
    檢查訊息在經(jīng)過(guò)傳送后是否已經(jīng)改變。
  • 錯(cuò)誤校正(Error Correction)
    自動(dòng)修正在經(jīng)過(guò)傳送后錯(cuò)誤的內(nèi)容。
    方便資料進(jìn)行傳輸
    以不同的形式表示相同的資料。
    例如: base64 就把二進(jìn)位的資料用ASCII 來(lái)表示。

常見(jiàn)演算法
base64, urlencode, hamming code,

結(jié)論

  • 有密鑰:加密、
  • 輸出比輸入小:壓縮
  • 其他:編碼

總結(jié)

以上是生活随笔為你收集整理的如何区分加密、压缩、编码?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。