對稱密鑰加密
對稱密鑰加密 Symmetric Key Algorithm 又稱為對稱加密、私鑰加密、共享密鑰加密:這類演算法在加密和解密時使用相同的密鑰,或是使用兩個可以簡單的相互推算的密鑰,對稱加密的速度一般都很快。
分組密碼
分組密碼 Block Cipher 又稱為「分塊加密」或「塊加密」,將明文分成多個等長的模塊,使用確定的演算法和對稱密鑰對每組分別加密解密。這也就意味著分組密碼的一個優點在於可以實現同步加密,因為各分組間可以相對獨立。
與此相對應的是流密碼:利用密鑰由密鑰流發生器產生密鑰流,對明文串進行加密。與分組密碼的不同之處在於加密輸出的結果不僅與單獨明文相關,而是與一組明文相關。
DES、3DES
數據加密標准 DES Data Encryption Standard 是由IBM在美國國家安全局NSA授權下研製的一種使用56位密鑰的分組密碼演算法,並於1977年被美國國家標准局NBS公布成為美國商用加密標准。但是因為DES固定的密鑰長度,漸漸不再符合在開放式網路中的安全要求,已經於1998年被移出商用加密標准,被更安全的AES標准替代。
DES使用的Feistel Network網路屬於對稱的密碼結構,對信息的加密和解密的過程極為相似或趨同,使得相應的編碼量和線路傳輸的要求也減半。
DES是塊加密演算法,將消息分成64位,即16個十六進制數為一組進行加密,加密後返回相同大小的密碼塊,這樣,從數學上來說,64位0或1組合,就有2^64種可能排列。DES密鑰的長度同樣為64位,但在加密演算法中,每逢第8位,相應位會被用於奇偶校驗而被演算法丟棄,所以DES的密鑰強度實為56位。
3DES Triple DES,使用不同Key重復三次DES加密,加密強度更高,當然速度也就相應的降低。
AES
高級加密標准 AES Advanced Encryption Standard 為新一代數據加密標准,速度快,安全級別高。由美國國家標准技術研究所NIST選取Rijndael於2000年成為新一代的數據加密標准。
AES的區塊長度固定為128位,密鑰長度可以是128位、192位或256位。AES演算法基於Substitution Permutation Network代換置列網路,將明文塊和密鑰塊作為輸入,並通過交錯的若干輪代換"Substitution"和置換"Permutation"操作產生密文塊。
AES加密過程是在一個4*4的位元組矩陣(或稱為體State)上運作,初始值為一個明文區塊,其中一個元素大小就是明文區塊中的一個Byte,加密時,基本上各輪加密循環均包含這四個步驟:
ECC
ECC即 Elliptic Curve Cryptography 橢圓曲線密碼學,是基於橢圓曲線數學建立公開密鑰加密的演算法。ECC的主要優勢是在提供相當的安全等級情況下,密鑰長度更小。
ECC的原理是根據有限域上的橢圓曲線上的點群中的離散對數問題ECDLP,而ECDLP是比因式分解問題更難的問題,是指數級的難度。而ECDLP定義為:給定素數p和橢圓曲線E,對Q=kP,在已知P,Q 的情況下求出小於p的正整數k。可以證明由k和P計算Q比較容易,而由Q和P計算k則比較困難。
數字簽名
數字簽名 Digital Signature 又稱公鑰數字簽名是一種用來確保數字消息或文檔真實性的數學方案。一個有效的數字簽名需要給接收者充足的理由來信任消息的可靠來源,而發送者也無法否認這個簽名,並且這個消息在傳輸過程中確保沒有發生變動。
數字簽名的原理在於利用公鑰加密技術,簽名者將消息用私鑰加密,然後公布公鑰,驗證者就使用這個公鑰將加密信息解密並對比消息。一般而言,會使用消息的散列值來作為簽名對象。
⑵ RAR加密原理
RAR使用AES-256-CBC加密。其原理是在通信過程中,數據發送方將原始數據分割成固定大小的塊,經過密鑰和加密演算法逐個加密後,發送給接收方;接收方收到加密後的報文後,結合密鑰和解密演算法解密組合後得出原始數據。
其優點在於加解密的高速度和使用長密鑰時的難破解性。假設兩個用戶需要使用對稱加密方法加密然後交換數據,則用戶最少需要2個密鑰並交換使用,如果企業內用戶有n個,則整個企業共需要n×(n-1) 個密鑰。
(2)共享軟體加密演算法擴展閱讀
RAR開發者為尤金·羅謝爾,RAR的全名是「RoshalARchive」,即「羅謝爾的歸檔」之意。首個公開版本RAR 1.3發布於1993年。
他開發程序壓縮或解壓RAR文件,最初用於DOS,後來移植到其它平台。主要的Windows版本編碼器,稱為WinRAR,以共享軟體的形式發行。不過羅謝爾公開了解碼器源碼,UnRAR解碼器許可證以不許發布編譯RAR兼容編碼器為條件下允許有條件自由發布與修改,而RAR編碼器一直是有專利的。
⑶ 序列號保護加密的原理和驗證方法
(1)序列號保護機制
數學演算法一項都是密碼加密的核心,但在一般的軟體加密中,它似乎並不太為人們關心,因為大多數時候軟體加密本身實現的都是一種編程的技巧。但近幾年來隨著序列號加密程序的普及,數學演算法在軟體加密中的比重似乎是越來越大了。
我們先來看看在網路上大行其道的序列號加密的工作原理。當用戶從網路上下載某個shareware——共享軟體後,一般都有使用時間上的限制,當過了共享軟體的試用期後,你必須到這個軟體的公司去注冊後方能繼續使用。注冊過程一般是用戶把自己的私人信息(一般主要指名字)連同信用卡號碼告訴給軟體公司,軟體公司會根據用戶的信息計算出一個序列碼,在用戶得到這個序列碼後,按照注冊需要的步驟在軟體中輸入注冊信息和注冊碼,其注冊信息的合法性由軟體驗證通過後,軟體就會取消掉本身的各種限制,這種加密實現起來比較簡單,不需要額外的成本,用戶購買也非常方便,在互聯網上的軟體80%都是以這種方式來保護的。
我們注意到軟體驗證序列號的合法性過程,其實就是驗證用戶名和序列號之間的換算關系是否正確的過程。其驗證最基本的有兩種,一種是按用戶輸入的姓名來生成注冊碼,再同用戶輸入的注冊碼比較,公式表示如下:
序列號 = F(用戶名)
但這種方法等於在用戶軟體中再現了軟體公司生成注冊碼的過程,實際上是非常不安全的,不論其換算過程多麼復雜,解密者只需把你的換算過程從程序中提取出來就可以編制一個通用的注冊程序。
另外一種是通過注冊碼來驗證用戶名的正確性,公式表示如下:
用戶名稱 = F逆(序列號) (如ACDSEE,小樓注)
這其實是軟體公司注冊碼計算過程的反演算法,如果正向演算法與反向演算法不是對稱演算法的話,對於解密者來說,的確有些困難,但這種演算法相當不好設計。
於是有人考慮到一下的演算法:
F1(用戶名稱) = F2(序列號)
F1、F2是兩種完全不同的的演算法,但用戶名通過F1演算法的計算出的特徵字等於序列號通過F2演算法計算出的特徵字,這種演算法在設計上比較簡單,保密性相對以上兩種演算法也要好的多。如果能夠把F1、F2演算法設計成不可逆演算法的話,保密性相當的好;可一旦解密者找到其中之一的反演算法的話,這種演算法就不安全了。一元演算法的設計看來再如何努力也很難有太大的突破,那麼二元呢?
特定值 = F(用戶名,序列號)
這個演算法看上去相當不錯,用戶名稱與序列號之間的關系不再那麼清晰了,但同時也失去了用戶名於序列號的一一對應關系,軟體開發者必須自己維護用戶名稱與序列號之間的唯一性,但這似乎不是難以辦到的事,建個資料庫就好了。當然你也可以根據這一思路把用戶名稱和序列號分為幾個部分來構造多元的演算法。
特定值 = F(用戶名1,用戶名2,...序列號1,序列號2...)
現有的序列號加密演算法大多是軟體開發者自行設計的,大部分相當簡單。而且有些演算法作者雖然下了很大的功夫,效果卻往往得不到它所希望的結果。其實現在有很多現成的加密演算法可以用,如RSADES,MD4,MD5,只不過這些演算法是為了加密密文或密碼用的,於序列號加密多少有些不同。我在這里試舉一例,希望有拋磚引玉的作用:
1、在軟體程序中有一段加密過的密文S
2、密鑰 = F(用戶名、序列號) 用上面的二元演算法得到密鑰
3、明文D = F-DES(密文S、密鑰) 用得到的密鑰來解密密文得到明文D
4、CRC = F-CRC(明文D) 對得到的明文應用各種CRC統計
5、檢查CRC是否正確。最好多設計幾種CRC演算法,檢查多個CRC結果是否都正確
用這種方法,在沒有一個已知正確的序列號情況下是永遠推算不出正確的序列號的。
(2)如何攻擊序列號保護
要找到序列號,或者修改掉判斷序列號之後的跳轉指令,最重要的是要利用各種工具定位判斷序列號的代碼段。這些常用的API包括GetDlgItemInt, GetDlgItemTextA, GetTabbedTextExtentA, GetWindowTextA, Hmemcpy (僅僅Windows 9x), lstrcmp, lstrlen, memcpy (限於NT/2000)。
1)數據約束性的秘訣
這個概念是+ORC提出的,只限於用明文比較注冊碼的那種保護方式。在大多數序列號保護的程序中,那個真正的、正確的注冊碼或密碼(Password)會於某個時刻出現在內存中,當然它出現的位置是不定的,但多數情況下它會在一個范圍之內,即存放用戶輸入序列號的內存地址±0X90位元組的地方。這是由於加密者所用工具內部的一個Windows數據傳輸的約束條件決定的。
2)Hmemcpy函數(俗稱萬能斷點)
函數Hmemcpy是Windows9x系統的內部函數,位於KERNEL32.DLL中,它的作用是將內存中的一塊數據拷貝到另一個地方。由於Windows9x系統頻繁使用該函數處理各種字串,因此用它作為斷點很實用,它是Windows9x平台最常用的斷點。在Windows NT/2K中沒有這個斷點,因為其內核和Windows9x完全不同。
3)S命令
由於S命令忽略不在內存中的頁面,因此你可以使用32位平面地址數據段描述符30h在整個4GB(0~FFFFFFFFh )空間查找,一般用在Windows9x下面。具體步驟為:先輸入姓名或假的序列號(如: 78787878),按Ctrl+D切換到SoftICE下,下搜索命令:
s 30:0 L ffffffff '78787878'
會搜索出地址:ss:ssssssss(這些地址可能不止一個),然後用bpm斷點監視搜索到的假注冊碼,跟蹤一下程序如何處理輸入的序列號,就有可能找到正確的序列號。
4)利用消息斷點
在處理字串方面可以利用消息斷點WM_GETTEXT和WM_COMMAND。前者用來讀取某個控制項中的文本,比如拷貝編輯窗口中的序列號到程序提供的一個緩沖區里;後者則是用來通知某個控制項的父窗口的,比如當輸入序列號之後點擊OK按鈕,則該按鈕的父窗口將收到一個WM_COMMAND消息,以表明該按鈕被點擊。
BMSG xxxx WM_GETTEXT (攔截序列號)
BMSG xxxx WM_COMMAND (攔截OK按鈕)
可以用SoftICE提供的HWND命令獲得窗口句柄的信息,也可以利用Visual Studio中的Spy++實用工具得到相應窗口的句柄值,然後用BMSG設斷點攔截。例:
BMSG 0129 WM_COMMAND
⑷ 騰達無線上網路由器 設置密碼選WPA 、WPA2 還是WEP啊哪個安全性更好
WPA2安全性更好。不過很多路由器已把WPA和WPA2歸置為一項了,也可以選擇WPA/WPA2的選項。
三種加密方式包括Mixed WEP加密、WPA-個人、WPA2-個人等。WEP已所淘汰,由於其安全性能存在弱點,很容易被專業人士攻破。其次由於WEP採用的是IEEE 802.11技術,影響無線網路設備的傳輸速率。
一般最常用的無線加密方式是WPA-PSK/WPA2-PSK+AES,安全性高,不容易被破解,防止別人蹭網。
注意事項
1、購買路由器的時候盡量自己的需求的購買。在購買前詢問支持的帶寬以及加密形式,盡量購買品牌路由器。
2、對wifi設置強密碼,盡量避免使用簡單密碼。
簡單密碼很容易就可以攻破,復雜密碼的暴力破解就比較難,所以選擇強密碼,包括英文大小寫,數字,特殊符號等。
3、設置訪客網路,避免家庭內部網路的暴露,給不法分子有機可乘。把家庭用網和訪客網路區分,這樣避免了內部網路密碼的泄露。
4、避免使用WIFI共享等聯網工具,暴露自己的路由器密碼。WIFI共享軟體會記住密碼上傳到雲端,這樣相當於將路由器密碼告訴了全世界,所以避免使用這類軟體,保障密碼安全。
⑸ 下載的軟體免費試用30天後需要注冊,怎樣可以破解
一、常見的共享軟體保護方式
正所謂「知己知彼,百站百勝」,在討論如何破解「共享軟體」之前,我們首先應該知道「共享軟體」都採用了哪些保護方法
1.網上注冊
目前大約80%的共享軟體都採用網上注冊。通常這類共享染件都會有使用時間上的限制,一旦過了試用期,就必須向軟體開發者著冊才能夠繼續使用。注冊過程一般都是用戶把自己的私人信息告訴給開發者,開發者再根據這些信息,按照一定的規則計算出注冊碼,用戶付費後即可得到。最後,用戶在軟體的注冊項中輸入得到的注冊碼,完成注冊。
2.警告窗口
警告窗口是軟體設計者用來不斷提醒用戶購買正版軟體的窗口,這樣的窗口會在軟體啟動或運行過程中不時彈出,非常令人討厭。此類軟體注冊後,窗口會自動消失。
3.限時器保護
有些共享軟體具有時間限制功能,比如每次運行時間超過多少分鍾就會自動關閉程序,必須重新啟動才能正常運行。還有一種保護模式就是程序只能運行有限的次數和天數等,這是由軟體內部的定時器控制運行時間的。
4.注冊穩當保護
這是一種利用文本文件來注冊軟體的方式。注冊文檔是純文字文件或二進制的文件,其內容是一些加密或未加密的數據,內容包括用戶的注冊信息,文件格式由開發者自行定義。試用版本軟體中沒有這個注冊文檔,只有當用戶向開發者付費注冊後,才會收到軟體的注冊文檔。用戶只要將該文檔放入指定的目錄中,就可以將軟體注冊。軟體在每次啟動的時從注冊文檔中讀取數據,然後利用某種演算法判斷注冊信息是否正確,進而決定以何種模式運行。
二、使用工具破解保護
了解了「共享軟體」通常使用的保護方式後,我們再來看看目前常用的破解工具軟體。
這里,我們推薦使用 Sunny FreeWizard 3.0
軟體名稱 Sunny FreeWizard 3.0
軟體版本 3.0
授權方式 共享軟體
STEP1:下載安裝 Sunny FreeWizard ,並運行安裝程序。
STEP2:選擇你要截取程序的限制,包括使用日期限制,使用天數限制,使用次數限制,啟動時候彈出的確認窗戶提醒注冊。
STEP3:輸入要阻止的軟體提醒注冊窗口,在這里可以隨便輸入。,進行窗戶檢測並確認啟動程序。
STEP4:破解後再次啟動 被破解的工具,軟體不再提示注冊。
三、破解軟體的類型
通常在網上供下載的破解軟體有四種類型:第一種是軟體的破解版,即下載的程序已被修改過,屏遮掉了注冊功能:第二種是軟體的破解補丁,即我們安裝了原始軟體後還需要運行破解補丁對軟體進行破解:第三種就是內存破解程序,也就是通過修改程序執行時在內存中的注冊信息,讓軟體認為用戶已經注冊<Sunny FreeWizard 就屬於>:第四種則是同通過軟體的注冊機計算出注冊碼,再進行軟體注冊。
四、"Cracker"的破解方法
其實現在大多數「共享軟體」的注冊碼,破解程序和補丁都可以在網上找到,大可不必自己費力氣來破解軟體。不過,你想知道."Cracker"面對這些軟體如何做的嗎?下面就詳細說說。
1. 「TNT」法——暴力破解
暴力破解最常見也最簡單的破解方法。."Cracker"直接利用編輯工具<例如ULTRAEDIT-32>對可執行文件進行修改,也就是說通過修改可屬性程序的源文件來達到破解目的。某些元件在驗證用戶注冊信息和注冊碼時候,如果用戶輸入的信息與軟體通過的演算法生成的注冊碼相等,程序就會注冊成功,否則就會注冊失敗。
2. 「翻箱倒櫃」法——追查軟體注冊碼
從軟體中找到注冊碼一般都是稍微有些功力的."Cracker"做的,軟體在進行注冊碼認證的時候會有個比較的過程,就是水軟體會通過我們輸入的用戶或者根據我們的其他注冊信息,生成一個正確的注冊碼與我們輸入的注冊碼進行比較,如果2個相同,表示注冊碼正確並通過注冊認證,否者就會提示出錯。而對於採用明碼的軟體來說<就是將計算機出的注冊碼直接放在內寸中>,."Cracker"就會利用調試器對內存程序進行分析,找出存儲在內存裡面的正確注冊碼。
3.破解之大成——編寫軟體注冊機
"Cracker"中的高手一般親自寫軟體的注冊機。這樣做其一是由於某些加密程度較高的軟體很難使用上述方法找到注冊碼,其二是."Cracker"進行破解通常並不僅僅是為了一個注冊碼,而是要對其軟體結構,加密演算法進行系統的分析和了解。當然,要想真正的寫出軟體的注冊機,破解者需要具備相當熟練的代碼分析能力和扎實的對軟體開發功底,這也需要破解者進行刻艱苦的學習和長期的積累。
編後語: 破解與反破解永遠是道高一尺,魔高一丈的爭斗。共享軟體想要成功,其作者除了在軟體中加強保護的力度,還需要不斷提高自己的水準,做出高質量,有獨特的創新,能真正滿足用戶需要的共享軟體
⑹ 分享Java常用幾種加密演算法
簡單的Java加密演算法有:
第一種. BASE
Base是網路上最常見的用於傳輸Bit位元組代碼的編碼方式之一,大家可以查看RFC~RFC,上面有MIME的詳細規范。Base編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base來將一個較長的唯一標識符(一般為-bit的UUID)編碼為一個字元串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制數據編碼為適合放在URL(包括隱藏表單域)中的形式。此時,採用Base編碼具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。
第二種. MD
MD即Message-Digest Algorithm (信息-摘要演算法),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法),主流編程語言普遍已有MD實現。將數據(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,MD的前身有MD、MD和MD。廣泛用於加密和解密技術,常用於文件校驗。校驗?不管文件多大,經過MD後都能生成唯一的MD值。好比現在的ISO校驗,都是MD校驗。怎麼用?當然是把ISO經過MD後產生MD的值。一般下載linux-ISO的朋友都見過下載鏈接旁邊放著MD的串。就是用來驗證文件是否一致的。
MD演算法具有以下特點:
壓縮性:任意長度的數據,算出的MD值長度都是固定的。
容易計算:從原數據計算出MD值很容易。
抗修改性:對原數據進行任何改動,哪怕只修改個位元組,所得到的MD值都有很大區別。
弱抗碰撞:已知原數據和其MD值,想找到一個具有相同MD值的數據(即偽造數據)是非常困難的。
強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD值,是非常困難的。
MD的作用是讓大容量信息在用數字簽名軟體簽署私人密鑰前被」壓縮」成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的十六進制數字串)。除了MD以外,其中比較有名的還有sha-、RIPEMD以及Haval等。
第三種.SHA
安全哈希演算法(Secure Hash Algorithm)主要適用於數字簽名標准(Digital Signature Standard DSS)裡面定義的數字簽名演算法(Digital Signature Algorithm DSA)。對於長度小於^位的消息,SHA會產生一個位的消息摘要。該演算法經過加密專家多年來的發展和改進已日益完善,並被廣泛使用。該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。散列函數值可以說是對明文的一種「指紋」或是「摘要」所以對散列值的數字簽名就可以視為對此明文的數字簽名。
SHA-與MD的比較
因為二者均由MD導出,SHA-和MD彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:
對強行攻擊的安全性:最顯著和最重要的區別是SHA-摘要比MD摘要長 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD是^數量級的操作,而對SHA-則是^數量級的操作。這樣,SHA-對強行攻擊有更大的強度。
對密碼分析的安全性:由於MD的設計,易受密碼分析的攻擊,SHA-顯得不易受這樣的攻擊。
速度:在相同的硬體上,SHA-的運行速度比MD慢。
第四種.HMAC
HMAC(Hash Message Authentication Code,散列消息鑒別碼,基於密鑰的Hash演算法的認證協議。消息鑒別碼實現鑒別的原理是,用公開函數和密鑰產生一個固定長度的值作為認證標識,用這個標識鑒別消息的完整性。使用一個密鑰生成一個固定大小的小數據塊,即MAC,並將其加入到消息中,然後傳輸。接收方利用與發送方共享的密鑰進行鑒別認證等。