㈠ 123456 密文 16進制4F13A621A8FDD616 是什麼加密演算法
[我是不是復制粘貼的,我認真寫的,你也認真看下就懂了]
我寫的這個淺顯易懂,看看你就明白了。舉得有例子。
RSA演算法舉例說明
空間裡面好像還有演算法
知道裡面剛才回答了另個朋友的問題帖出來給你看看
題目:用RSA演算法加密時,已經公鑰是(e=7,n=20),私鑰是(e=3,n=20),用公鑰對消息M=3加密,得到的密文是_____?
給出詳細過程。 謝謝!
答:
你所說的:
n=20
d=7 公鑰
e=3 私鑰
對M=3 進行加密
M'=M^d%n (M的d次方,然後除以n取余數)
M'=3^7%20=2187%20=7 加密後等於7
對M'=7進行解密
M=M'^e%n=7^3%20=343%20=3 解密後又變成3了
你取的兩個素數太小了,所以n太小根本起不了作用。至少要取1024位的數字
㈡ 被加密的光碟如何解密如圖.
第一式:用UltraEdit等16進制編輯器直接找到序列號
執行UltraEdit,用它打開光碟根目錄下的SETUP.EXE,然後點擊菜單上的「搜索」->「查找」,在彈出的對話框「查找什麼」欄中填入「請輸入序列號」,注意要將多選框「查找ASCII字元」勾選上,回車,在找到的「請輸入序列號」後面,接下去的數字就是序列號了。這一式直取中宮(序列號),厲害!
第二式:用IsoBuster等光碟刻錄軟體直接去瀏覽光碟上的隱藏文件
執行IsoBuster,選擇加密盤所在的光碟機,點擊選擇欄旁邊的刷新按鈕,此時它就會讀取光碟機中的檔,這時你就會發現在左邊的檔瀏覽框中多出一個檔夾,那裡面就是你真正想要的檔。這時你就可以執行或復制這些檔了。這一式一目瞭然,清楚!
第三式:要用到虛擬光碟機軟體(如Vcdrom,虛擬光碟機2000)和16進制編輯器(如UltraEdit,WinHex)
方法是:
1. 用虛擬光碟機軟體把加密光碟做成虛擬光碟文件,進度到1%的時候就可以按Ctrl+Alt+Del組合鍵強行終止虛擬光碟機程序的執行。
2. 用16進制編輯器打開只做了%1的光碟文件(後綴名為vcd或fcd的文件),在編輯窗口中上下查找任意看得見的目錄名或文件名(由於檔不大很容易找到的),在該位置的上下就可以看見隱含的目錄名或文件名了(一般是目錄名)。
3. 在MS-DOS窗口下用CD命令進入看到的那個目錄,再Dir一下就可以看見你想要的了,此時是執行還是復制檔就隨你了。這一式左右互搏,再厲害的加密盤也在所難逃。
第四式:在光碟機所在盤符下執行:
d r2filelist.exe即可執行瀏覽程序(filelist.exe為隱藏的瀏覽光碟的程序)。
用這種方法對付好多光碟都有效,但我不敢說100%有效,為什麼?因為我不可能把所有的光碟都試過呀!這一式不需注冊碼,不需要軟體,時尚之選!
第五式:利用File Monitor對付隱藏目錄的加密光碟
File Monitor這個軟體大家可能不是很熟悉,它是純「綠色」** 軟體,可監視系統中指定文件執行狀況,如指定檔打開了哪個檔,關閉了哪個檔,對哪個文件進行了數據讀取等。通過它,你指定監控的文件有任何讀、寫、打開其它文件的操作都能被它監視下來,並提供完整的報告信息。哈哈,聰明的你肯定想到了吧?對!就是用它的這個功能來監視加密光碟中的文件執行情況,從而得到我們想要的東西。
下面以某新版DDR跳舞碟為例,來看看如何發現隱藏目錄。
1. 執行File Monitor的主文件FileMon,在「Options」內將「Capture Events」打上勾;
2. 執行DDR跳舞碟,當選擇的舞曲已調入內存後即可以退出DDR;
3. 回到FileMon,看到什麼了?對!所有的文件調用均被記錄下來啦!現在再將「Capture Events」前面的勾去掉,免得它仍舊不斷的增加記錄,然後來看看記錄的都是什麼。以下是截取的部分內容:
Explorer FindOpen E:DDR99.EXE SUCCESS
Explorer FindClose E:DDR99.EXE SUCCESS
………… ……… …………………
………… ……… …………………
Ddr99 FindOpen E:BGMS.WAV NOMORE
Ddr99 FindOpen E:BGMS.WAV NOMORE
………… ……… …………………
………… ……… …………………
Ddr99 Open E:BGMTRACK_01.WAV SUCCESS
Ddr99 Seek E:BGMTRACK_01.WAV SUCCESS
一切顯而易見了,原來新版的DDR 跳舞碟其加密子目錄為「BGM」!好啦,可以將喜歡的曲目拷貝下來後去退碟了。這一式天羅地網,讓隱藏目錄無處藏身!
㈢ 求一個16進制加密解密函數
你加密使用的是Unicode編碼吧。需要進行字元編碼轉換!
完整程序如下: (我只是一個好人而已,^_^ )
// hexlize.cpp
// Tan kaiShuai @ Antiy Labs.
// v1.0.0 10/09/2010 @ Antiy labs.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
// 加密程序
VOID hexlize(LPSTR buff,size_t size, LPCSTR str){
size_t slen = strlen(str)+1;
LPWSTR szStrUnic = (LPWSTR)malloc(sizeof(WCHAR)*slen);
MultiByteToWideChar(CP_ACP,0,str,slen,szStrUnic,slen);
LPWSTR pStrUnic = szStrUnic;
while((*pStrUnic) != '\0')
{
if((size-=6) <= 0) break;
sprintf(buff,"%%u%04X",(*pStrUnic));
buff += 6;
++pStrUnic;
}
free(szStrUnic);
}
// 解密程序
VOID unhexlize(LPSTR buff,size_t size, LPCSTR str){
size_t slen = strlen(str)/6+1;
LPWSTR szStrUnic = (LPWSTR)malloc(sizeof(WCHAR)*slen);
LPWSTR pStrUnic = szStrUnic;
while((*str) != '\0')
{
if(!sscanf(str,"%%u%04X",pStrUnic)) break;
str += 6;
++pStrUnic;
}
(pStrUnic++)[0] = '\0\0';
WideCharToMultiByte(CP_ACP,0,szStrUnic,(pStrUnic-szStrUnic),buff,size,NULL,NULL);
free(szStrUnic);
}
// 測試
int main(int argc, char* argv[])
{
CHAR szBuff[256];
CHAR szBuff2[256];
hexlize(szBuff,256,"你好");
printf("szBuff = %s\n",szBuff);
unhexlize(szBuff2,256,szBuff);
printf("szBuff2 = %s\n",szBuff2);
fflush(stdin); getchar();
return 0;
}
// 轉載時請保留作者版權信息,謝謝!
㈣ 如何使用16進制編碼的RSA公鑰進行RSA加密
我們來回顧一下RSA的加密演算法。我們從公鑰加密演算法和簽名演算法的定義出發,用比較規范的語言來描述這一演算法。RSA公鑰加密體制包含如下3個演算法:KeyGen(密鑰生成演算法),Encrypt(加密演算法)以及Decrypt(解密演算法)。(PK,SK)\leftarrowKeyGen(\lambda)。密鑰生成演算法以安全常數\lambda作為輸入,輸出一個公鑰PK,和一個私鑰SK。安全常數用於確定這個加密演算法的安全性有多高,一般以加密演算法使用的質數p的大小有關。\lambda越大,質數p一般越大,保證體制有更高的安全性。在RSA中,密鑰生成演算法如下:演算法首先隨機產生兩個不同大質數p和q,計算N=pq。隨後,演算法計算歐拉函數\varphi(N)=(p-1)(q-1)。接下來,演算法隨機選擇一個小於\varphi(N)的整數e,並計算e關於\varphi(N)的模反元素d。最後,公鑰為PK=(N,e),私鑰為SK=(N,d)。CT\leftarrowEncrypt(PK,M)。加密演算法以公鑰PK和待加密的消息M作為輸入,輸出密文CT。在RSA中,加密演算法如下:演算法直接輸出密文為CT=M^e\mod\varphi(N)M\leftarrowDecrypt(SK,CT)。解密演算法以私鑰SK和密文CT作為輸入,輸出消息M。在RSA中,解密演算法如下:演算法直接輸出明文為M=CT^d\mod\varphi(N)。由於e和d在\varphi(N)下互逆,因此我們有:CT^d=M^{ed}=M\mod\varphi(N)所以,從演算法描述中我們也可以看出:公鑰用於對數據進行加密,私鑰用於對數據進行解密。當然了,這個也可以很直觀的理解:公鑰就是公開的密鑰,其公開了大家才能用它來加密數據。私鑰是私有的密鑰,誰有這個密鑰才能夠解密密文。否則大家都能看到私鑰,就都能解密,那不就亂套了。=================分割線=================我們再來回顧一下RSA簽名體制。簽名體制同樣包含3個演算法:KeyGen(密鑰生成演算法),Sign(簽名演算法),Verify(驗證演算法)。(PK,SK)\leftarrowKeyGen(\lambda)。密鑰生成演算法同樣以安全常數\lambda作為輸入,輸出一個公鑰PK和一個私鑰SK。在RSA簽名中,密鑰生成演算法與加密演算法完全相同。\sigma\leftarrowSign(SK,M)。簽名演算法以私鑰SK和待簽名的消息M作為輸入,輸出簽名\sigma。在RSA簽名中,簽名演算法直接輸出簽名為\sigma=M^d\mod\varphi(N)。注意,簽名演算法和RSA加密體制中的解密演算法非常像。b\leftarrowVerify(PK,\sigma,M)。驗證演算法以公鑰PK,簽名\sigma以及消息M作為輸入,輸出一個比特值b。b=1意味著驗證通過。b=0意味著驗證不通過。在RSA簽名中,驗證演算法首先計算M'=\sigma^e\mod\varphi(N),隨後對比M'與M,如果相等,則輸出b=1,否則輸出b=0。注意:驗證演算法和RSA加密體制中的加密演算法非常像。所以,在簽名演算法中,私鑰用於對數據進行簽名,公鑰用於對簽名進行驗證。這也可以直觀地進行理解:對一個文件簽名,當然要用私鑰,因為我們希望只有自己才能完成簽字。驗證過程當然希望所有人都能夠執行,大家看到簽名都能通過驗證證明確實是我自己簽的。=================分割線=================那麼,為什麼題主問這么一個問題呢?我們可以看到,RSA的加密/驗證,解密/簽字過程太像了。同時,RSA體制本身就是對稱的:如果我們反過來把e看成私鑰,d看成公鑰,這個體制也能很好的執行。我想正是由於這個原因,題主在學習RSA體制的時候才會出現這種混亂。那麼解決方法是什麼呢?建議題主可以學習一下其他的公鑰加密體制以及簽名體制。其他的體制是沒有這種對稱性質的。舉例來說,公鑰加密體制的話可以看一看ElGamal加密,以及更安全的Cramer-Shoup加密。簽名體制的話可以進一步看看ElGamal簽名,甚至是BLS簽名,這些體制可能能夠幫助題主更好的弄清加密和簽名之間的區別和潛在的聯系。至於題主問的加密和簽名是怎麼結合的。這種體制叫做簽密方案(SignCrypt),RSA中,這種簽密方案看起來特別特別像,很容易引起混亂。在此我不太想詳細介紹RSA中的加密與簽字結合的方案。我想提醒題主的是,加密與簽字結合時,兩套公私鑰是不同的。