導航:首頁 > 文件處理 > packer壓縮

packer壓縮

發布時間:2023-09-03 23:12:39

❶ 求助前端JS都是用什麼加密

寫過 js混淆器,談一些淺顯的個人看法。

個人認為,js的不可讀化處理分為三個方面:壓縮(compression)、混淆(obfuscation) 和加密(encryption)。 (不可讀化處理,這是我自己發明的術語,一切會增加代碼不可讀性的代碼轉換, 都可以這么叫,「增加代碼不可讀性」可能是代碼轉換的結果或者目的).

1. 壓縮

這一操作的目的,是讓最終代碼傳輸量 (不代表代碼量, 也不代表文件體積)盡可能小。壓縮js的工具,常見的有:YUI Compressor、UglifyJS、Google Closure Compiler 等。

通常在代碼壓縮的過程中,只改變代碼的語法,代碼的語義和控制流不會有太大改變。

常見做法是把局部變數縮短化,把一些運算進行等價替換等。代碼壓縮對於代碼保護有一些幫助,但由於語義和控制流基本沒變,起不了太大作用。

在壓縮層面上,代碼不可讀只是一種附帶傷害,不是最終目的。

2. 混淆

這一操作的目的,是讓代碼盡可能地不可讀,主要用作代碼保護。

讓代碼不可讀,增加分析的難度,這是唯一目的。混淆過後文件體積變大一倍也沒關系,代碼量變多也沒關系,運算慢50% 也沒關系。

常見的做法有:分離常量、打亂控制流、增加無義代碼、檢查運行環境如果不對就罷工,等等。

在混淆層面上,代碼不可讀是最終目的。

值得一提的是,Google Closure Compiler 的 Advance Level Compression 會壓縮類和對象的成員,其壓縮結果很難分析,也可以認為是一種混淆,但兼容性不太好。

廣告時間:我寫的 js混淆器,中文名叫 「看起來很厲害的 JS 編譯器」, 英文名叫做 The Impressive JS.Segment.Compiler , 看起來很厲害的 JS 編譯器 。

3. 加密

說實話我很難對加密做一個定義,因為加密在Web界有太多歧義了。

有加密就有解密,意味著加密操作可逆,密文可以明文化。

就這樣看來,在Web界,可以稱之為加密的東西包括:HTTPS傳輸、javaScript實現對稱加密或者不對稱加密等等。

這樣看來,不可逆的代碼壓縮和混淆就不能列入加密這個范疇了。

非要找一個可以稱之為加密,又經常被人誤解為壓縮和混淆的東西,Dean Edwards 的 Dean Packer/Unpacker 可以拿來做個例子。

比如我們把 var num=1;alert(num);

輸入 Dean Packer,pack 一下,得到這么一串東西,是不是看著非常像被壓縮和混淆過的代碼?

把上面那串意義不明物拿來 unpack 一下,得到了原文。

實際上 Dean Packer 只是對源碼進行了一個字元串變換,沒有深入到代碼語法層面,你可以拿 "Hello world, 你好師姐" 來試試。

用Online JavaScript beautifier 能輕松把這串東西還原為 「Hello world, 你好師姐」。

可以看出,代碼加密意味著:將代碼明文進行可逆的變換(加密),生成密文;將密文進行逆變換(解密),可以還原明文;最終運行環境運行的是解密代碼。

結語

實際上大家對壓縮、混淆、加密這三個概念還是挺不清晰的,我在這里說一些個人見解,希望有幫助。

在現實項目中,我是多種手段結合的:

對於不需要做代碼保護的項目,比如個人博客,做代碼壓縮,加快載入速度,這就夠了。
對於需要做一些代碼保護,防止抄襲的項目,可以在源碼中加入一些開發者的信息和防護代碼,然後混淆和壓縮。很不幸的是,我這方面總是做得不太好,防君子防不了小人啊哈哈。
對於需要嚴格加密的項目,可以用 混淆、壓縮、加密、簽名檢查 等多種手段,這我就不清楚了,等大嬸來補充。

❷ 需要 用 JavaScript 解壓 通過lz77壓縮的字元串

我看lz77要操縱位元組,javascript現在沒這個能力,所以估計實現不了lz77解壓吧,你是否要考慮下使用不壓縮的字元串呢

❸ (轉)Unity 圖片壓縮技巧

轉自 移動設備壓縮紋理使用技巧

壓縮紋理能夠節約不少內存空間,因此目前項目中UI全都是用Texture Packer打包出大圖之後壓縮。Unity導入紋理的默認設置是compress,在符合條件的情況下會優先使用PVR或ETC、否則會降為RGBA4444。從程序的角度來說,當然是1/4大小的壓縮紋理更好啦~但是,畢竟是有損壓縮,會帶來一定的損失,有時候還是挺郁悶的。

第一個常見的問題是漸變顏色區域經過壓縮之後會出現色階,如下圖所示。我參考了dither思路,用Photoshop加了一層0.3%的高斯分布雜音;可以看到ETC和PVR都有所改進,但是仔細盯著看依然能看到一些雜訊。

另一個很常見的問題就是有雜色(下圖綠色部分),本質是在某些block里邊界混合了…解決方法就是非常粗暴的放大解析度,可以看到當放大到2x大小的時候就完全沒問題了。這個事情桌子很早也和我提過,壓縮紋理的UI部分最好放大一些,當超采樣來用…

順便再提一句就是,新版本的Texture Packer里有了polygon布局,還能扣洞真是excited…

ps. 最早我們使用的是將原始圖片拆分成RGB和Alpha Mask兩張圖的策略,然後替換默認的UI Shader。但是Unity-5.2開始默認將ETC2設為默認(順便支持了ETC1 Compression for Sprite Atlases),所以我就懶得切圖+每個Sprite拖材質球了…直接一張RGBA進行壓縮完事兒

閱讀全文

與packer壓縮相關的資料

熱點內容
裘錫圭pdf 瀏覽:720
android模擬器調試 瀏覽:131
sap命令大全 瀏覽:293
mysql導出數據命令 瀏覽:951
文件夾隱藏了出不來 瀏覽:562
電信網上大學源碼 瀏覽:204
rr輪轉調度演算法 瀏覽:253
我的世界無法登入伺服器怎麼辦 瀏覽:148
文件加密授權特定隱藏訪問控制 瀏覽:801
程序員劍靈官網 瀏覽:516
php調用static方法 瀏覽:934
天正命令版 瀏覽:86
聚合支付加密幣 瀏覽:313
蜜源app是什麼時候創立的 瀏覽:706
計算機專業學51單片機 瀏覽:211
程序員不接受反駁 瀏覽:299
微軟自帶的壓縮軟體 瀏覽:289
中國玩家在日本伺服器做什麼 瀏覽:51
12864和單片機 瀏覽:899
25匹空調壓縮機 瀏覽:649