代碼加密原理
A. 請問這種JS代碼怎麼加密
這不算加密,只不過一眼看不出來罷了。其實就是JavaScript字元串轉義。
原理很簡單,比如字元 』w『
它的 charCode 是 119 十六進製表示為 0x77
然後利用 JavaScript 字元串轉義前綴 x,表達出編碼過的 ASCII 字元來:
x+charCode的十六進製表示(兩位)
所以字元串 'x77' 就是字元串 'w'
也就是說
'x77'==='w'
這個的返回值是 true,二者完全等效!
這是對於 ascii 代碼表示形式,charCode 大於 255 的怎麼處理?就要用到 u 前綴了
u+charCode的十六進製表示(
比如漢字 '學' 的 charCode 是23398 (0x5b66)
書寫時只要把 0x 替換為 u:
u5b66
這樣就可以了。
'u5b66'==='學'
那麼為什麼要這么麻煩呢?直接輸入字元不就好了嗎?要知道,有些字元是不能列印或不能被輸入的(比如功能/控制字元「退格」等),如果要在字元串中包含這些字元,只能依靠字元串轉義了!
回頭看樓主給的代碼:
"x64x6fx63x75x6dx65x6ex74"
這個是什麼?
F12開瀏覽器開發者工具,切到控制台(或者你有 node.js),在控制台輸入這一串。
你看到輸出什麼了嗎?
"document"
繼續
"x77x72x69x74x65x6cx6e"
這個輸入後,控制台返回
"writeln"
剩下括弧內的也是一樣的啦。結果是一個指向特定地址的 <a> 標簽。
所以翻譯過來就是
window['document']['writeln']('<ahref="...">標簽</a>')
看懂了?
好,既然樓主說要怎麼加密的。我就寫了個 JS 腳本,只要調用這個方法,你就得到「加密」後的字元串信息了:
functionencrypt(str){
varresult='',charCode
for(vari=0,length=str.length;i<length;i++){
charCode=str.charCodeAt(i)
if(charCode<0x10){
result+='\x0'+charCode.toString(16)
}elseif(charCode<0x100){
result+='\x'+charCode.toString(16)
}elseif(charCode<0x1000){
result+='\u0'+charCode.toString(16)
}else{
result+='\u'+charCode.toString(16)
}
}
returnresult
}
在控制台執行
encrpty('樓主給的那一串')
返回
""
樓主只要把括弧中的那一串替換為上面輸入的內容就好了。
B. ios md5加密原理是什麼意思
MD5加密演算法原理MD5的全稱是Message-Digest Algorithm 5(信息-摘要演算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest開發出來,經MD2、MD3和MD4發展而來。它的作用是讓大容量信息在用數字簽名軟體簽署私人密匙前被"壓縮"成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的大整數)。不管是MD2、MD4還是MD5,它們都需要獲得一個隨機長度的信息並產生一個128位的信息摘要。雖然這些演算法的結構或多或少有些相似,但MD2的設計與MD4和MD5完全不同,那是因為MD2是為8位機器做過設計優化的,而MD4和MD5卻是面向32位的電腦。這三個演算法的描述和C語言源代碼在Internet RFCs 1321中有詳細的描述( http://www.ietf.org/rfc/rfc1321.txt),這是一份最權威的文檔,由Ronald L. Rivest在1992年8月向IEFT提交。. .
C. pascal對字元文本的加密處理原理,包括漢字。
Pascal中的加密,一般首先將一個字元串分成一個一個的字元。再將這一個一個的字元通過ASCII編碼表,將每一個字元通過函數:ord(a:char);得到該字元的序號(數字),然後將序號統一源唯進行加減乘除運算從而得到新的序號(解密就是把序號逆向運伍橡算得到源序號)。再通過函數:chr(a:integer);將序號變為字元,則經過這一過程字元串就加密了。如果要密碼更難解密,也可以將密碼每一個字元按順序雹橘培打亂。至於解密,這就是把該過程逆向進行就可以得到加密前的字元串。
註:ord(a:char);和chr(a:integer);是互逆函數。例字元a-->
a=chr(ord(a))
正整數b-->
b=ord(chr(b))
在ASCII編碼表中每一個字元都有對應的序號,包括大寫字母、小寫字母、符號、中文漢字。在ASCII編碼表中,漢字被分為兩部分,這兩部分在ASCII編碼表中都分別由自己對應的序號。如果出現亂碼,有可能是命令提示符屬性中語言為英文。修改方式為:1.右鍵單擊命令提示符窗口標題欄2.點擊「默認值」並彈出窗口3.選擇「選項」標簽頁4.在「默認代碼頁」中選擇簡體中文並確定。這可能導致Free
Pascal等以命令提示符為界面的軟體出現亂碼,解決方法只需把「默認代碼頁」重新改成英文(美國)即可。
D. c#怎麼給源代碼加密,就是就算給別人源代碼
c# dll 加密最快的方法使用加殼工具Virbox Protector,直接加密,Virbox Protectorke可以對dll進行性能分析,分析每個函數的調用次數,對每個函數選擇保護方式如:混淆/虛擬化/碎片化/代碼加密等;每種加密方法的特點是什麼呢?
代碼加密(X86):
針對X86匯編代碼:一種代碼自修改技術(SMC)保護代碼。把當前代碼加密存儲為密文,存儲起來,當程序運行到被保護函數時候自動解密並且執行,執行之後再擦除代碼,運行到哪裡才解密哪裡的代碼,黑客無法獲得原始機器指令和內存完整性的代碼,由於是純內存操作所以運行速度快, 性價高的保護手段,建議全加
代碼加密(IL)
針對dotNet程序,保護IL代碼:一種動態運行方法解密被保護代碼。把當前代碼加密存儲為密文,存儲起來,當程序運行到被保護函數時候自動解密並且執行,執行之後再擦除代碼,執行之後再擦除代碼,運行到哪裡才解密哪裡的代碼,黑客無法獲得原始的中間語言的指令和內存完整性的代碼,由於是純內存操作所以運行速度快, 性價高的保護手段,建議全加
壓縮
類似zip等壓縮軟體把代碼和數據段壓縮,由於帶有動態密碼,沒有任何工具可以自動脫殼,是防止反編譯和反匯編關鍵手段。
代碼混淆(IL):
將代碼中的各種元素,如變數,函數,類的名字改寫成無意義的名字。比如改寫成單個字母,或是簡短的無意義字母組合,甚至改寫成「__」這樣的符號,使得閱讀的人無法根據名字猜測其用途。
a)重寫代碼中的部分邏輯,將其變成功能上等價,但是更難理解的形式。比如將for循環改寫成while循環,將循環改寫成遞歸,精簡中間變數,等等。
b) 打亂代碼的格式。比如刪除空格,將多行代碼擠到一行中,或者將一行代碼斷成多行等等。
c) 添加花指令,通過特殊構造的指令來使得反匯編器出錯,進而干擾反編譯工作的進行。
代碼混淆器也會帶來一些問題。主要的問題包括:· 被混淆的代碼難於理解,因此調試除錯也變得困難起來。開發人員通常需要保留原始的未混淆的代碼用於調試。· 對於支持反射的語言,代碼混淆有可能與反射發生沖突。· 代碼混淆並不能真正阻止反向工程,只能增大其難度。因此,對於對安全性要求很高的場合,僅僅使用代碼混淆並不能保證源代碼的安全。
代碼混淆的特點是安全度低、不會影響效率。
代碼虛擬化:
針對X86代碼: 是指將機器代碼翻譯為機器和人都無法識別的一串偽代碼位元組流;在具體執行時再對這些偽代碼進行一一翻譯解釋,逐步還原為原始代碼並執行。 這段用於翻譯偽代碼並負責具體執行的子程序就叫作虛擬機VM(好似一個抽象的CPU)。它以一個函數的形式存在,函數的參數就是位元組碼的內存地址。 由於虛擬機代碼和虛擬機CPU的實現可以做到每次都是隨機設計和隨機執行 並且代碼每次可以隨機變化,包括一些邏輯上的等價變化可以參考硬體N個與非門NOT-AND實現各種邏輯門,演算法和訪問內存形式的變化,包括數學上的非等價變化,代碼體積幾乎可以膨脹達到100到10000倍,造成機器無法做演算法還原到原有邏輯。
代碼虛擬化的特點是:安全度中、不會影響效率。
代碼碎片化:
深思自主知識產權的最新技術:基於 LLVM 和 ARM 虛擬機技術,自動抽取海量代碼移入 SS 內核態模塊,極大的降低了使用門檻, 不再需要手動移植演算法,可移植的演算法從有限的幾個增長到幾乎無限多,支持的語言也不再限於 C, 這是加密技術的一次綜合應用,效果上類似於將軟體打散執行,讓破解者無從下手。
安全度高、建議關鍵函數或調用加密鎖方法;使用太多會影響效率
E. 3des加密原理
使用3Des加密演算法前,我們需要了解一下當前主流的加密模式:單向加密和雙向加密,兩者最大的區別在於加密的密文是否具有可逆性。
單向加密:將需要加密的數據進行加密,並且密文不可進行解密,像我們常用的加密演算法MD5就屬於這種。
雙向加密:和單向加密不同的是可以通過某些方式進行加解密的操作,其中分為對稱加密和非對稱加密。
對稱加密:指數據使用者必須擁有相同的密鑰才可以進行加密解密,就像彼此約定的一串暗號,本文介紹的3Des加密就屬於這種。
非對稱加密:通過一組包含公鑰和私鑰的密碼來加密解密,用公鑰加密,私鑰解密,首推的就是RSA加密
---------------------------------------------------------------------------------------------------------------------------------------
3Des加密演算法,由於可以逆推原文,所以主要通過本地的唯一密鑰來保證數據的安全性,我這邊通過生成隨機的256位加密字元串存儲在本地,代碼讀取時將其通過md5加密成32位的字元串(由於本地有原始密鑰,不必擔心md5加密不可逆),最後以這32位加密字元串作為密鑰進行加解密的操作。
F. 加密演算法有幾種基於什麼原理
1、對稱加密演算法
對稱臘答正加密演算法用來對敏感數據等信息進行加密,常用的演算法包括:
DES(Data Encryption Standard):數據加密標准,速度較快,適用於加密大量數據的場合。
3DES(Triple DES):是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard):高級加密標准,是下一代的加密演算法標准,速度快,安全級別高;
演算法原理
AES 演算法基於排列和置換運算。
排列是對數據重新進行安排,置換是將一個數據單元替換為另一個。
AES 使用幾種不同的方法來執行排列和置換運算。
2、非對稱演算法
常見的非對稱加密演算法如下:
RSA:由 RSA 公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件塊的長度也是可變的;
DSA(Digital Signature Algorithm):數字簽名演算法,是一種標準的 DSS(數字簽名標准);
ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。
演算法原理——橢圓曲線上的難題
橢圓曲線上離散對數問題ECDLP定義如下:給定素數p和橢圓曲線E,對Q=kP,在已知P,Q 的情況下求出小於p的正整數k。
可以證明由k和P計算Q比較容易,而由Q和舉行P計算k則比較困難。
將橢圓曲線輪悔中的加法運算與離散對數中的模乘運算相對應,將橢圓曲線中的乘法運算與離散對數中的模冪運算相對應,我們就可以建立基於橢圓曲線的對應的密碼體制。
G. 加密的原理什麼
加密有兩種方式:對稱密鑰加密和非對稱密鑰加密:
1. 對稱密鑰加密原理
在加密傳輸中最初是採用對稱密鑰方式,也就是加密和解密都用相同的密鑰。
2. 非對稱密鑰加密原理 正因為對稱密鑰加密方法也不是很安全,於是想到了一種稱之為「非對稱密鑰」加密(也稱公鑰加密)方法。所謂非對稱密鑰加密是指加密和解密用不同的密鑰,其中一個稱之為公鑰,可以對外公開,通常用於數據加密,另一個相對稱之為私鑰,是不能對外公布的,通常用於數據解密。而且公/私鑰必須成對使用,也就是用其中一個密鑰加密的數據只能由與其配對的另一個密鑰進行解密。這樣用公鑰加密的數據即使被人非法截取了,因為他沒有與之配對的私鑰(私鑰僅發送方自己擁有),也不能對數據進行解密,確保了數據的安全。
H. RAR加密原理
RAR使用AES-256-CBC加密。其原理是在通信過程中,數據發送方將原始數據分割成固定大小的塊,經過密鑰和加密演算法逐個加密後,發送給接收方;接收方收到加密後的報文後,結合密鑰和解密演算法解密組合後得出原始數據。
其優點在於加解密的高速度和使用長密鑰時的難破解性。假設兩個用戶需要使用對稱加密方法加密然後交換數據,則用戶最少需要2個密鑰並交換使用,如果企業內用戶有n個,則整個企業共需要n×(n-1) 個密鑰。
(8)代碼加密原理擴展閱讀
RAR開發者為尤金·羅謝爾,RAR的全名是「RoshalARchive」,即「羅謝爾的歸檔」之意。首個公開版本RAR 1.3發布於1993年。
他開發程序壓縮或解壓RAR文件,最初用於DOS,後來移植到其它平台。主要的Windows版本編碼器,稱為WinRAR,以共享軟體的形式發行。不過羅謝爾公開了解碼器源碼,UnRAR解碼器許可證以不許發布編譯RAR兼容編碼器為條件下允許有條件自由發布與修改,而RAR編碼器一直是有專利的。
I. 加密IC的加密原理
LKT4100防盜版晶元真正對用戶的軟體代碼和重要數據提供了全方位、高安全度的保護。其加密原理為一種全新的、可信的軟體保護模型,工作原理:在這套加密保護方案中,單片機內部應用軟體的關鍵的代碼和數據被安全地移植到LKT4100防盜版晶元的硬體中保護起來。在需要使用時,應用軟體可以通過功能調用引擎指令運行硬體中的關鍵代碼和數據並返回結果,從而依然可以完成整個軟體全部的功能。由於這些代碼和數據在單片機端沒有副本存在,因此解密者無從猜測演算法或竊取數據,從而極大程度上保證了整個軟體系統的安全性。這種加密方案是目前理論上最安全的加密方案。簡言之,LKT4100防盜版晶元提供了一套可信的解決方案,從理論上保證軟體加密的安全。
LKT4100防盜版晶元是目前全球硬體版權保護領域中第一款採用智能卡(Smart Card)技術嵌入程序代碼運行的硬體加密晶元。自LKT4100加密晶元引入硬體版權保護行業以來,超過1000家硬體開發以及方案開發提供商採用了這項先進技術,累計銷量已經突破5000萬片。
軟硬體開發商可以把自己軟體中一部分演算法和代碼下載到晶元中運行。用戶採用標准C語言, 編寫操作代碼。編譯並下載到智能晶元中。在軟體實際運行過程中,通過調用函數方式運行智能晶元內的程序段,並獲得運行結果,並以此結果作為用戶程序進一步運行的輸入數據。LKT4100防盜版晶元成了軟體產品的一部分。從根本上杜絕了程序被破解的可能。LKT4100防盜版晶元能有效保護自有軟體的知識產權,維護自身的經濟利益,有效避免軟體盜版。
J. 51單片機的加密如何使用原理是是什麼
AT89cxx加密原理
單片機解密簡單就是擦除單片機片內的加密鎖定位。由於AT89C系列單片機擦除操作時序設計上的不合理。使在擦除片內程序之前首先擦除加密鎖定位成為可能。AT89C系列單片機擦除操作的時序為:擦除開始---->擦除操作硬體初始化(10微秒)---- >擦除加密鎖定位(50----200微秒)--->擦除片內程序存儲器內的數據(10毫秒)----->擦除結束。如果用程序監控擦除過程,一旦加密鎖定位被擦除就終止擦除操作,停止進一步擦除片內程序存儲器,加過密的單片機就變成沒加密的單片機了。片內程序可通過匯流排被讀出。對於 AT89C系列單片機有兩種不可破解的加密方法。
一、永久性地破壞單片機的加密位的加密方法。簡稱OTP加密模式。
二、永久性地破壞單片機的數據匯流排的加密方法。簡稱燒匯流排加密模式。
一、OTP加密模式原理
這種編程加密演算法燒壞加密鎖定位(把晶元內的矽片擊穿),面不破壞其它部分,不佔用單片機任何資源。加密鎖定位被燒壞後不再具有擦除特性, 89C51/52/55有3個加密位進一步增加了加密的可靠性。一旦用OTP模式加密後,單片機片內的加密位和程序存儲器內的數據就不能被再次擦除, 89C51/52/55單片機就好象變成了一次性編程的OTP型單片機一樣。如果用戶程序長度大於89C51單片機片內存儲器的容量,也可使用OPT模式做加密,具體方法如下:
1、按常規擴展一片大容量程序存儲器,如27C512(64K)。
2、把關鍵的程序部分安排在程序的前4K中。
3、把整個程序寫入27C512,再把27C512的前4K填充為0。
4、把程序的前4K固化到AT89C51中,用OPT模式做加密。
5、把單片機的EA腳接高電平。
這樣程序的前4K在單片機內部運行,後60K在片外運行。盜版者無法讀出程序的前4K程序,即使知道後60K也無濟於事。
二、煉匯流排加密模式原理
因為單片機片內的程序代碼最終都要通過數據匯流排讀出,如果指導單片機的數據匯流排的其中一條線永久性地破壞,解密者即使擦除了加密位,也無法讀出片內的程序的正確代碼。89C1051/2051的數據匯流排為P1口燒匯流排模式燒壞89C2051的P1.0埠,原程序代碼為02H、01H、00H。讀出的數據則為03H,01H,00H。其中最低位始終為1,讀出的程序代碼顯然為錯碼。這種加密模式用於加密89C1051/2051單片機。缺點是佔用單片機的資源。開發設計人員在設計單片機硬體系統時只要預留出口線P1.0不用,以後就可用燒匯流排模式對單片機加密。