當前位置:首頁 » 密碼管理 » oc加密演算法

oc加密演算法

發布時間: 2022-03-01 22:46:29

⑴ 如何用VB實現RSA加密演算法,網上找到了一份代碼,沒有注釋看不懂,請大神解釋!!!

RSA演算法非常簡單,概述如下:
找兩素數p和q
取n=p*q
取t=(p-1)*(q-1)
取任何一個數e,要求滿足e<t並且e與t互素(就是最大公因數為1)
取d*e%t==1

這樣最終得到三個數: n d e

設消息為數M (M <n)
設c=(M**d)%n就得到了加密後的消息c
設m=(c**e)%n則 m == M,從而完成對c的解密。
註:**表示次方,上面兩式中的d和e可以互換。

在對稱加密中:
n d兩個數構成公鑰,可以告訴別人;
n e兩個數構成私鑰,e自己保留,不讓任何人知道。
給別人發送的信息使用e加密,只要別人能用d解開就證明信息是由你發送的,構成了簽名機制。
別人給你發送信息時使用d加密,這樣只有擁有e的你能夠對其解密。

rsa的安全性在於對於一個大數n,沒有有效的方法能夠將其分解
從而在已知n d的情況下無法獲得e;同樣在已知n e的情況下無法
求得d。

<二>實踐

接下來我們來一個實踐,看看實際的操作:
找兩個素數:
p=47
q=59
這樣
n=p*q=2773
t=(p-1)*(q-1)=2668
取e=63,滿足e<t並且e和t互素
用perl簡單窮舉可以獲得滿主 e*d%t ==1的數d:
C:\Temp>perl -e "foreach $i (1..9999){ print($i),last if $i*63%2668==1 }"
847
即d=847

最終我們獲得關鍵的
n=2773
d=847
e=63

取消息M=244我們看看

加密:

c=M**d%n = 244**847%2773
用perl的大數計算來算一下:
C:\Temp>perl -Mbigint -e "print 244**847%2773"
465
即用d對M加密後獲得加密信息c=465

解密:

我們可以用e來對加密後的c進行解密,還原M:
m=c**e%n=465**63%2773 :
C:\Temp>perl -Mbigint -e "print 465**63%2773"
244
即用e對c解密後獲得m=244 , 該值和原始信息M相等。

<三>字元串加密

把上面的過程集成一下我們就能實現一個對字元串加密解密的示例了。
每次取字元串中的一個字元的ascii值作為M進行計算,其輸出為加密後16進制
的數的字元串形式,按3位元組表示,如01F

代碼如下:

#!/usr/bin/perl -w
#RSA 計算過程學習程序編寫的測試程序
#watercloud 2003-8-12
#
use strict;
use Math::BigInt;

my %RSA_CORE = (n=>2773,e=>63,d=>847); #p=47,q=59

my $N=new Math::BigInt($RSA_CORE{n});
my $E=new Math::BigInt($RSA_CORE{e});
my $D=new Math::BigInt($RSA_CORE{d});

print "N=$N D=$D E=$E\n";

sub RSA_ENCRYPT
{
my $r_mess = shift @_;
my ($c,$i,$M,$C,$cmess);

for($i=0;$i < length($$r_mess);$i++)
{
$c=ord(substr($$r_mess,$i,1));
$M=Math::BigInt->new($c);
$C=$M->(); $C->bmodpow($D,$N);
$c=sprintf "%03X",$C;
$cmess.=$c;
}
return \$cmess;
}

sub RSA_DECRYPT
{
my $r_mess = shift @_;
my ($c,$i,$M,$C,$dmess);

for($i=0;$i < length($$r_mess);$i+=3)
{
$c=substr($$r_mess,$i,3);
$c=hex($c);
$M=Math::BigInt->new($c);
$C=$M->(); $C->bmodpow($E,$N);
$c=chr($C);
$dmess.=$c;
}
return \$dmess;
}

my $mess="RSA 娃哈哈哈~~~";
$mess=$ARGV[0] if @ARGV >= 1;
print "原始串:",$mess,"\n";

my $r_cmess = RSA_ENCRYPT(\$mess);
print "加密串:",$$r_cmess,"\n";

my $r_dmess = RSA_DECRYPT($r_cmess);
print "解密串:",$$r_dmess,"\n";

#EOF

測試一下:
C:\Temp>perl rsa-test.pl
N=2773 D=847 E=63
原始串:RSA 娃哈哈哈~~~
加密串:
解密串:RSA 娃哈哈哈~~~

C:\Temp>perl rsa-test.pl 安全焦點(xfocus)
N=2773 D=847 E=63
原始串:安全焦點(xfocus)
加密串:
解密串:安全焦點(xfocus)

⑵ wordpress base64解密。高分懸賞。另外請教下加密解密方法,畢竟直接工具解後,還需要再翻譯。

?><?php include (TEMPLATEPATH . '/bottom.php'); ?>
<div class='clear'></div>
</div>
<div id="footer">

<div class="fleft">
<?php $foot = get_option('fram_foot'); echo stripslashes($foot); ?>
</div>

<div class="fright">
<ul>
<li>Framed rex wordpress theme from <a href="http://www.dcphotographic.co.uk/" title="Wedding Photographer" > Wedding Photographer </a></li>
<li>Copyright &; <?php echo date('Y');?> <?php bloginfo('name');?> </li>

</ul>
</div>

</div>
</div>
</div>
<?php wp_footer(); ?>
</body>
</html> <?

⑶ 加密演算法求解密

如果 有秘鑰了 你可以試試也許能解密出來,但是你只有密文和明文這怎麼搞, 密文你是如何得到的?

⑷ 這段代碼什麼意思

這個應該是經過加密後的內容,別人加密的目的就是為了不讓其他人知道。
不是所有的加密演算法都能夠反編譯的,就算你知道他的加密演算法。比如MD5加密演算法等,現在是能,但也得花上200台PC機一兩年的不停運算才能夠破譯。
所以樓主別想在這方面打主意了。不然別人加密就沒意義了。

⑸ 跪求 DES跨(C# Android IOS)三個平台通用的加解密方法


#region跨平台加解密(c#安卓IOS)

//publicstaticstringsKey="12345678";

/////<summary>

/////解密

/////</summary>

/////<paramname="pToDecrypt">要解密的以Base64</param>

/////<paramname="sKey">密鑰,且必須為8位</param>

/////<returns>已解密的字元串</returns>

//publicstaticstringDesDecrypt(stringpToDecrypt)

//{

////轉義特殊字元

//pToDecrypt=pToDecrypt.Replace("-","+");

//pToDecrypt=pToDecrypt.Replace("_","/");

//pToDecrypt=pToDecrypt.Replace("~","=");

//byte[]inputByteArray=Convert.FromBase64String(pToDecrypt);

//using(DESCryptoServiceProviderdes=newDESCryptoServiceProvider())

//{

//des.Key=ASCIIEncoding.ASCII.GetBytes(sKey);

//des.IV=ASCIIEncoding.ASCII.GetBytes(sKey);

//System.IO.MemoryStreamms=newSystem.IO.MemoryStream();

//using(CryptoStreamcs=newCryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write))

//{

//cs.Write(inputByteArray,0,inputByteArray.Length);

//cs.FlushFinalBlock();

//cs.Close();

//}

//stringstr=Encoding.UTF8.GetString(ms.ToArray());

//ms.Close();

//returnstr;

//}

//}

/////<summary>

/////對字元串進行DES加密

/////</summary>

/////<paramname="sourceString">待加密的字元串</param>

/////<returns>加密後的BASE64編碼的字元串</returns>

//publicstringEncrypt(stringsourceString)

//{

//byte[]btKey=Encoding.UTF8.GetBytes(sKey);

//byte[]btIV=Encoding.UTF8.GetBytes(sKey);

//DESCryptoServiceProviderdes=newDESCryptoServiceProvider();

//using(MemoryStreamms=newMemoryStream())

//{

//byte[]inData=Encoding.UTF8.GetBytes(sourceString);

//try

//{

//using(CryptoStreamcs=newCryptoStream(ms,des.CreateEncryptor(btKey,btIV),CryptoStreamMode.Write))

//{

//cs.Write(inData,0,inData.Length);

//cs.FlushFinalBlock();

//}

//returnConvert.ToBase64String(ms.ToArray());

//}

//catch

//{

//throw;

//}

//}

//}

#endregion

安卓---------------------------------------------------------------------------

////加密

//(Stringmessage,Stringkey)

//throwsException{

//byte[]bytesrc=Base64.decode(message.getBytes(),Base64.DEFAULT);

//Ciphercipher=Cipher.getInstance("DES/CBC/PKCS5Padding");

//DESKeySpecdesKeySpec=newDESKeySpec(key.getBytes("UTF-8"));

//SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance("DES");

//SecretKeysecretKey=keyFactory.generateSecret(desKeySpec);

//IvParameterSpeciv=newIvParameterSpec(key.getBytes("UTF-8"));

//cipher.init(Cipher.DECRYPT_MODE,secretKey,iv);

//byte[]retByte=cipher.doFinal(bytesrc);

//returnnewString(retByte);

//}

////解密

//(Stringmessage,Stringkey)

//throwsException{

//Ciphercipher=Cipher.getInstance("DES/CBC/PKCS5Padding");

//DESKeySpecdesKeySpec=newDESKeySpec(key.getBytes("UTF-8"));

//SecretKeyFactorykeyFactory=SecretKeyFactory.getInstance("DES");

//SecretKeysecretKey=keyFactory.generateSecret(desKeySpec);

//IvParameterSpeciv=newIvParameterSpec(key.getBytes("UTF-8"));

//cipher.init(Cipher.ENCRYPT_MODE,secretKey,iv);

//byte[]encryptbyte=cipher.doFinal(message.getBytes());

//returnnewString(Base64.encode(encryptbyte,Base64.DEFAULT));

//}

Ios--------------------------------------------------------------------------------------------------------------------

staticconstchar*encryptWithKeyAndType(constchar*text,CCOperationencryptOperation,char*key)
{
NSString*textString=[[NSStringalloc]initWithCString:textencoding:NSUTF8StringEncoding];
//NSLog(@"[[item.urldescription]UTF8String=%@",textString);
constvoid*dataIn;
size_tdataInLength;

if(encryptOperation==kCCDecrypt)//傳遞過來的是decrypt解碼
{
//解碼base64
NSData*decryptData=[GTMBase64decodeData:[textStringdataUsingEncoding:NSUTF8StringEncoding]];//轉成utf-8並decode
dataInLength=[decryptDatalength];
dataIn=[decryptDatabytes];
}
else//encrypt
{
NSData*encryptData=[textStringdataUsingEncoding:NSUTF8StringEncoding];
dataInLength=[encryptDatalength];
dataIn=(constvoid*)[encryptDatabytes];
}


CCCryptorStatusccStatus;
uint8_t*dataOut=NULL;//可以理解位type/typedef的縮寫(有效的維護了代碼,比如:一個人用int,一個人用long。最好用typedef來定義)
size_tdataOutAvailable=0;//size_t是操作符sizeof返回的結果類型
size_tdataOutMoved=0;

dataOutAvailable=(dataInLength+kCCBlockSizeDES)&~(kCCBlockSizeDES-1);
dataOut=malloc(dataOutAvailable*sizeof(uint8_t));
memset((void*)dataOut,00,dataOutAvailable);//將已開辟內存空間buffer的首1個位元組的值設為值0

//NSString*initIv=@"12345678";
constvoid*vkey=key;
constvoid*iv=(constvoid*)key;//[initIvUTF8String];

//CCCrypt函數加密/解密
ccStatus=CCCrypt(encryptOperation,//加密/解密
kCCAlgorithmDES,//加密根據哪個標准(des,3des,aes。。。。)
kCCOptionPKCS7Padding,//選項分組密碼演算法(des:對每塊分組加一次密3DES:對每塊分組加三個不同的密)
vkey,//密鑰加密和解密的密鑰必須一致
kCCKeySizeDES,//DES密鑰的大小(kCCKeySizeDES=8)
iv,//可選的初始矢量
dataIn,//數據的存儲單元
dataInLength,//數據的大小
(void*)dataOut,//用於返回數據
dataOutAvailable,
&dataOutMoved);

NSString*result=nil;

if(encryptOperation==kCCDecrypt)//encryptOperation==1解碼
{
//得到解密出來的data數據,改變為utf-8的字元串
result=[[NSStringalloc]initWithData:[NSDatadataWithBytes:(constvoid*)dataOutlength:(NSUInteger)dataOutMoved]encoding:NSUTF8StringEncoding];
}
else//encryptOperation==0(加密過程中,把加好密的數據轉成base64的)
{
//編碼base64
NSData*data=[NSDatadataWithBytes:(constvoid*)dataOutlength:(NSUInteger)dataOutMoved];
result=[GTMBase64stringByEncodingData:data];
}

return[resultUTF8String];

}
+(NSString*)encryptWithContent:(NSString*)contenttype:(CCOperation)typekey:(NSString*)aKey
{
constchar*contentChar=[contentUTF8String];
char*keyChar=(char*)[aKeyUTF8String];
constchar*miChar;
miChar=encryptWithKeyAndType(contentChar,type,keyChar);
return[NSStringstringWithCString:miCharencoding:NSUTF8StringEncoding];
}

⑹ 文件加密解密問題

是不是-高強度文件夾加密大師 8000 ,如果是在安裝一個同樣的,就能找到,在不行重做系統可以吧

⑺ 中九二次加密有破解方法了嗎

中九現已成功破解,天成299.艾雷特V4V5.通過刷機就能看54個頻道,明天即將破解三星高清王和海爾高清王 DM-518專業解密115度中星6B可以解密CCTV-3.5.6.8和中央數字電視100多套。還可以解密134亞太6號.138亞洲5號.146馬布海1號,主要節目有東森電影.龍祥電影.鳳凰電影.東森洋片.好萊塢電影。天映電影.星空衛視.澳亞衛視 HBO電影.CR頻道.

⑻ 破解無限網路密碼

無線區域網密碼破解
只要你要上網的附近有無線區域網而它又加了密碼,可用此法一試,不過不要用於非法目的喲{^W'` sB [[t#h
第 1 頁 共 23 頁
f(Jf7n*y'A 無線網路WEP 的破解過程/w4i;QY[9X
WLAN 技術出現之後,「安全」就成為始終伴隨在「無線」這個詞身邊的影子,針對無線網路(La#H kw$B#BBa
技術中涉及的安全認證加密協議的攻擊與破解就層出不窮。現在,網際網路上可能有數以百計,
w3sbuFv 甚至以千計的文章介紹關於怎麼m4q6MN `7g:av*L
攻擊與破解WEP,但有多少人能夠真正地成功攻破WEP 的加密演算法呢?下面筆者來給&e'N&K-u%a` }7P
大家介紹一些關於WEP 加密手段的知識,以及就是菜鳥只要按照步驟操作也可成功破解hU"P"Jkfi
WEP 密鑰的方法。當然最終的目的還是為了讓記者做好安全設置對破解更好的進行防範。l6k"H a'yi} @
本系列文章共兩篇,在第一篇里主要介紹破解WEP 的方法,第二篇里介紹如何設置WLAN}2V%U-fy$d |^d
的安全設置來進行更好的防範。
%J0Y!U6O^J2]h 一、WEP:無線網路安全最初的保護者[-M)WJW3`Bb
相對於有線網路來說,通過無線區域網發送和接收數據更容易被竊聽。設計一個完V5t)| Ar7~
善的無線區域網系統,加密和認證是需要考慮的兩個必不可少的安全因素。無線區域網中應:c!l\\$]SK
用加密和認證技術的最根本目的就是使無線業務能夠達到與有線業務同樣的安全等級。針對,M'r J0d-cq ~
這個目標,IEEE802.11 標准中採用了WEP(Wired Equivalent Privacy:有線對等保密)協議來vn*gZ|"D?L
設置專門的安全機制,進行業務流的加密和節點的認證。它主要用於無線區域網中鏈路層信0N["S3Um.wR;W.F
息數據的保密。WEP 採用對稱加密機理,數據的加密和解密採用相同的密鑰和加密演算法。8Lg2k5y7e
WEP 使用加密密鑰(也稱為 WEP 密鑰)加密 802.11 網路上交換的每個數據包的數據部u.lmg Ed I
分。啟用加密後,兩個 802.11 設備要進行通信,必須具有相同的加密密鑰,並且均配置為.R6V8cQvZ)y%zz
使用加密。如果配置一個設備使用加密而另一個設備沒有,則即使兩個設備具有相同的加密
e0~)R?0h?2Y!V 密鑰也無法通信。(如圖一所示)
+DU?8JzL!Rv 圖一:WEP 加密
fE@ oc] |*~+Z WEP 加密過程X!kqn0r
WEP 支持 64 位和128 位加密,對於 64 位加密,加密密鑰為 10 個十六進制字qCoq?B
符(0-9 和 A-F)或 5 個 ASCII 字元;對於 128 位加密,加密密鑰為 26 個十六進制字元或
R)w `X `F 13 個 ASCII 字元。64 位加密有時稱為 40 位加密;128 位加密有時稱為 104 位加密。152
6rO4Ge3G 第 2 頁 共 23 頁$fX@^R(o5m.?|
位加密不是標准 WEP 技術,沒有受到客戶端設備的廣泛支持。WEP 依賴通信雙方共享的 gDmb0@+]
密鑰來保護所傳的加密數據幀。其數據的加密過程如下。WG"BPM,Z8z
1、計算校驗和(Check Summing)。%O p$_NN5W1?
(1)對輸入數據進行完整性校驗和計算。K*G7~8Ku9M#f
(2)把輸入數據和計算得到的校驗和組合起來得到新的加密數據,也稱之為明文,明~~3O_(rb t0x3k f
文作為下一步加密過程的輸入。j `y"bm
2、加密。在這個過程中,將第一步得到的數據明文採用演算法加密。對明文的加密有Uc0a(V7C)i@
兩層含義:明文數據的加密,保護未經認證的數據。6P.VC.^h?w#Y
(1)將24 位的初始化向量和40 位的密鑰連接進行校驗和計算,得到64 位的數據。z,u#HU-DqG"s
(2)將這個64 位的數據輸入到虛擬隨機數產生器中,它對初始化向量和密鑰的校驗
$vC)K~Jz/D O'N+g 和計算值進行加密計算。+Yz%_lG2V)J
(3)經過校驗和計算的明文與虛擬隨機數產生器的輸出密鑰流進行按位異或運算得3r Z)B3o'?I!rJ!e
到加密後的信息,即密文。
.?{1o:t)c@^ 3、傳輸。將初始化向量和密文串接起來,得到要傳輸的加密數據幀,在無線鏈路上
5VIT/Rrtr `#{ H"l 傳輸。(如圖二所示)/a%_Ly~9A
圖二:WEP 加密過程 BL9W^gJ'Bm
WEP 解密過程
:g"vra%EZ;lx q 在安全機制中,加密數據幀的解密過程只是加密過程的簡單取反。解密過程如下。i${ e z(w&Z7h'^
第 3 頁 共 23 頁
$Q!F.H-}Dm:p~ 1、恢復初始明文。重新產生密鑰流,將其與接收到的密文信息進行異或8C/~#o!Hc[ RD
運算,以恢復初始明文信息。$u_k `gG;t9R+V
2、檢驗校驗和。接收方根據恢復的明文信息來檢驗校驗和,將恢復的明文信息分離,n[J1W)\B1a
重新計算校驗和並檢查它是否與接收到的校驗和相匹配。這樣可以保證只有正確校驗和的數
5q;` f*B3J8J 據幀才會被接收方接受。9B:i5_KhSm
圖三:WEP 解密過程d(}6S0Jn
二、破解WEP 密鑰前的准備工作
+mUe&q2b6C 在以下的兩部分內容內,筆者將逐步地向大家介紹關於怎樣來破解WEP 的密鑰的2?o-juw1k
方法。這種方法並不需要什麼特別的硬體設備,僅僅只需兩台(只有一台也可)帶有無線網卡
3vAG_c4C}H 的筆記本而已,整個攻擊過程所使用的也只是一些共享和自由軟體,並不需什麼相當專業的 fo1c,U2C2w"Z/]+fH J
工具。看懂這篇文章和學會操作的讀者,並不需要你是一名網路專家,不過要基本上熟悉一,I&]"q])n7W[+? t V
些網路術語和基本的原理。最少,你應該知道怎樣去ping 另外一台機器以測試網路是否暢N)~.qE;kUM
通,並會打開一個Windows 的命令提示符窗口,知道輸入相關命令和了解關於Windows 網
)t"u&|HH7jZh 絡屬性窗口的相關內容。這就是基本的要求,要不然怎麼可稱之為菜鳥都可學會的方法呢。,f](Wt9i:Ai}'[
1、組建實驗環境
K C:]eG cDq 開始之前,我們的第一步就是要組建一個實驗環境,你不可能拿別人的網路來玩你E3b:B&E;b
的破解吧,這樣做既違反了法律也是一種不道德的行為噢。搭建一個實驗環境下的無線網路nWQK6W'P5w
平台,則無線AP 是少不了的,另外,三台帶有無線網卡的筆記本(使用有無線網卡的台式機/Y d$[)j#@U
也可以)組成的簡單網路就可滿足要求了。組成的網路拓撲如下圖四所示。
E6| gN5M6z 第 4 頁 共 23 頁O SDB"d1M6q4}s,s
圖四:組建一個實驗環境s)h@:i"o N9Ar;[
在圖四所示的網路中,無線AP 的選用,我們使用的是一個Netgear 的產品,型號1IC h yG'r-E,g
為WGT624v2,它在以後充當被攻擊目標的角色,在以後就稱它為目標AP。在所使用的三
A.Qi\ g Q.LK*wu 台機器中,一台是作為被攻擊目標的客戶端機器,暫且稱之為「Target」;另外兩台筆記本一台
%S2D{3H;J(J i 執行主動攻擊,促使網路流量的產生,以便足夠多的數據包有比較短的時間內能夠被捕捉到,
O"Q @Z%b 稱這台機器為「Attack」;剩下的那台筆記本就是用來嗅探並捕捉那些主動攻擊產生的數據包&N @q9m Z-g
了,則把它稱為「Sniff」。當然,盡管整個的破解過程可以在一台筆記本上完成,但筆者並不
g P.\.^#I oV(qY@ 推薦這種做法,用僅僅一台筆記本,會使以後的工作變得很麻煩,並且發現使用這種方法的
[:Yg-Fs j 話竊聽程序可能會發生一點小問題。在一個使用率不高的WLAN 中,使用主動攻擊比被動探
|.A3eg?uC 測的機會更大,它可在較短的時間內使WLAN 產生更多的數據包從而加快破解WEP 的速度。
[o%a;|me 在這個實驗環境中一定非得要使用筆記本不可,我們當然也能夠使用桌面PC 或桌!l7Z[j D8p
面PC 與筆記本混用,不過使用筆記本的話它的便攜性更好,而且對現在的無線PC Card 卡 ?#@A(P L
有更好的兼容性。
w n&Ou\ }&S6h@ Target 所使用的無線網卡與晶元無關,只要是基於802.11b,任意廠家的產品都可5rmU)a*?C3t z P
滿足要求。而Attack 與Sniff 兩台機器是使用的兩塊基於PRISM 晶元的802.11b 的無線網x.L:W!?8_)O
卡。盡管我們在以後的操作中中使用的很多工具(如Kismet)都可支持相當多種類的無線網卡,
*[`4ahc&M 但筆者還是建議使用基於PRISM 2 晶元的網卡,因為這種晶元能夠被我們在破解過程所要
8{*O?9j$Z3B.Yp"} 使用到的所有工具都支持。 D(g.f$bC\]
無線網卡一般有外置天線與內置天線兩種,如果所購買的無線網卡並沒有內置天線
w qAw!V!W)Vh#E 的話,還必須自己再另購天線。不過外置天線的優點就是增益更高,靈敏度更好,可以調節
!j {^ R%qT 天線的方向從而得到更好的信號接收;而內置天線是可以更方便地攜帶,缺點是天線方向無法~0L1R C'}$z,LND9o6_x
調節。筆者看到有一種移動式外置天線,使用起來是很方便的,在這種移動式天線的底部有j;g9K'S }0z1R
幾個橡膠材料的小吸杯,可以把它方便地吸附在筆記本的頂蓋上,如果是在車內使用的話,K/j4o+p q;a4U(k%X
還可把它牢牢地吸在車空窗玻璃上呢。如下圖五所示。R%@6d9jHA(Wp$d(lh
第 5 頁 共 23 頁
#Sk#O"N8C 圖四:移動式天線 ],VY/tS$E#v W
2、實驗WLAN 的設置
m1A]+Lz nb)_ 適當地對這個實驗環境進行一下設置是很重要的,因為我們畢竟只想要在這個用來
9c1U3E6q?,T1@ P4W{2Y 實驗的環境中來完成所有的操作,在下文中描述的攻擊過程中,將會強制終止一1e:qi2qk8q

w,~ G3Kl5t 與AP 有連接的客戶端。這種攻擊可能會對在這個鄰近區域內的無線用戶造成嚴重損害,
f|LE"gj&ln*x 為了避免鄰近的AP 上的用戶受到附帶的攻擊, 是要保護那些並不屬於實驗WLAN 的用戶。}C)p'}'B-Cs0@
如果這個操作環境中位於一個復雜的辦公室、辦公大樓或其他有許多無線網路覆蓋的區域中
9bIz-y OD 的話,要嘗試一下這樣的破解操作,請最好等到晚上沒什麼人工作,網路不再繁忙時進行, wj(V a:k
免得「城門失火,殃及池魚」。'{c E'@N@
第一步就是連接和設置這個被攻擊的實驗無線區域網,如前面所述,這個WLAN 包7hkNG&l"T&e1N
含有一個Access Point(無線路由器)和僅僅一個無線客戶端,且這個無線區域網被我們想要
+@?3Z}9I z,e'wEy 破解的WEP 密鑰保護起來了。把目標AP 的SSID(System Set ID)設置為「starbucks」,SSIDd?O0[ ?)pjA}q
用來區分不同的網路,也稱為網路名稱。無線工作站必須出示正確的SSID,與無線訪問
h)lC4Ov^ 第 6 頁 共 23 頁5[7A_ ~A+DB
AP 的SSID 相同,才能訪問AP;如果出示的SSID 與AP 的SSID 不同,那麼AP 將拒絕他bk&x~3pA De
通過本服務區上網。可以認為SSID 是一個簡單的口令,從而提供口令機制,實現一定的安
q;P#E L'b4Np 全性。並在這個WAP 上配置一個64 位的WEP 密鑰來進行保護。
~4T$?_U0{P)[ 把如下的信息記錄下來以便以後使用
#];huJFy dr7sNB ①AP 的MAC 地址。它通常會在AP 的WEB 配置菜單上顯示出來, AP 的底部或.pO5F7B/HB,Y_
側面的標簽上也可能記有本機的MAC 地址。
(q L$t ~w3l ②AP 的SSID。(bI(Z9Fs&[8i-M
③AP 的無線頻道(Channel)。9Q/s+G#t5f%\&g"}!v
④WEP 密鑰。如果無線AP 顯示的密鑰像0xFFFFFFFFFF 這樣的格式(把設定的值
q-} J5C+hm6M+A 替代F 的值),把除0x 外的每個字母都記下來。
P VSJ,X9nJwE 第二步就是把Target 客戶端連接到目標AP 上。我們現在需要把這個客戶端連接到
Rof2wiU7S 目標AP 以進行進一步的配置,(以下都是在Windows XP 下進行的),右鍵單擊桌面上的「網
8RL4s-V ?)r } 上鄰居」圖標,或者通過「開始」菜單,然後單擊「屬性」,雙擊「Wireless Network Connection」,
'B7^ C'm7FW 然後打開如圖五所示的窗口,其中顯示的是有多個可用的無線網路,但如果只有一個無線網^{~;u i|S
絡的話,則在該窗口中可能只僅僅顯示剛剛配置的那個名為「starbucks」的AP,雙擊相應的
Z V7m(Kb.j SSID 名稱以連接到目標AP。
2t2Of3ML}"pS3\k 圖五:連接到目標WLAN
%n"gA1yEH5U/\;h0`8zPk 因為AP 已開啟了WEP 保護,連接時Windows 會要求輸入一個密碼(如圖六所示),
oI)^'v ZF 把剛才設置的的WEP 密鑰輸入(當然從記事本或寫字板文檔中粘貼過來也可),稍等一會兒後C~)}AO5KB[
Windows 就會報告已連接到網路上。確認一下是否已真正地連接成功,去ping 一個在有線
*N W6l2X rE6x 網路計算機來測試一下;或者假如這個實驗WLAN 已接連到網際網路上,隨便打開一個WEB 站
*Sb%j5q'J3B6f7]fn 點看是否能夠連接來加以確認。如果不能成功地ping 通已知地址的機器或者打不開正常的
AbP3aU$o!H.I WEB 站點,則打開無線網卡的屬性,單擊「支持」按鈕,檢查一下無線網上是否已獲取了一個nL&gc0T
正確的IP 地址,如果沒有能夠獲取正確的IP 地址,看看網路中的DHCP 伺服器是否已啟用,6m X @J[#Dy[
第 7 頁 共 23 頁I^.^+AC/a
並檢查無線網卡的TCP/IP 屬性是否設置成「自動獲取IP 地址」了,如果一切都正常,在這個s8u5j%b`8Q4`]9K
無線連接中點擊 「修復」按鈕來加以改正。
3[8~ Jyo.o 圖六:輸入WEP 密鑰
gAA3bC$~ B z 第三步就是記錄下Target 機器的MAC 地址。一旦成功連接到網路上,就把被攻擊 M3WS2Paa/}
的Target 計算機的MAC 地址記錄下來。方法有兩種,一是打開一個命令提示符窗口並輸入,}Y Szui8F
ipconfig/all 命令也可看到這個MAC 地址,這個窗口的內容如下圖七所示(無線網卡的MACIn(A\ uh/jZp"m"Or
地址信息已高亮度顯示)。
W#T h$|y\8m^o 圖七:輸入ipconfig/all 命令來發現MAC 地址
-T"VMuu$C 二是在Windows XP 中,可從「無線連接狀態」窗口來得到這個MAC 地址,單擊「支K)g lr'z)R)A*~l
持」按鈕,然後單擊「詳細信息」,這個MAC 地址就顯示在窗口頂端的右邊(如圖八所示),當然,[.X#z6z8]0w2r3y-B
不同的機器顯示的名稱可能不盡相同,另外的計算機顯示的就可能如「物理地址」這一類的描
FFlH&I 述信息了。在這個窗口的信息,組成MAC 地址的字母和數字被短劃線分隔,短劃線的目的:S{$k+tV6a
只是使這些字元看得更清楚,但實際的MAC 地址是沒有這些短劃線的。
7zSB6W,{(Y(xxE#L:n 第 8 頁 共 23 頁&_TR+VEW ? kfi
圖八:在網路連接詳細信息中顯示的MAC 地址|jVsAb8G
3、筆記本的設置
dq4iF#X5A a'e 首先,我們來准備破解WEP 密鑰所需要的幾個工具軟體(Kismet、Airomp、
E/T.y3[/t fH)X Void11、Aireplay 和Aircrack),Kism
4h*L/y m4by et:用來掃描整個區域內的WLAN,找到實驗用的目標WLAN,收集相關數據,t`[Le!^2z
(SSID 值、頻道、AP 及與之相連接的客戶端的MAC 地址等);Airomp:對目標WLAN 進行y+V$~ b([8?7US
掃描並捕獲其產生的數據包到一個文件中;Void11:從目標AP 中驗證某台計算機,並強制這
?s5vz2V#c 個客戶端重新連接到到目標AP,以使其一個ARP 請求;Aireplay:接受這些ARP 請求並回送
,r)@/eXNB&~ b 到目標AP,以一個合法的客戶端身份來截獲這個ARP 請求; Aircrack:接受Airomp 生成的
-b3a7N^+_'Y%K] 捕獲文件並從中提取WEP 密鑰。
c[jnR 它們都是公開源代碼的共享或自由軟體,這些所有的工具都可以在一個被稱為 K/dj"f&Bo{l,Y
「Auditor Security Collection LIVE CD」 的共享光碟上找到,這個光碟是一張可引導系統的光J8Oey+{F5DN7w
盤,可以引導一個經過改進過的Kanotix Linux,這個Linux 版本無需存取硬碟,在通過光碟n L/sCm1{ t
啟動時直接安裝到內存中就,它啟動後可自動檢測和配置多種無線網卡。在本文使用的
A)n-ez'w Auditor Security Collection LIVE CD 是最新版本,版本號為auditor-150405-04,下載地址
6gA5a(VHtgRu!M)lO 為[url=http://new.remote-exploit.org/index.php/Auditor_mirrors]http://new.remote-exploit.org/index.php/Auditor_mirrors[/url],下載的文件格式是CD 映像文
f4]G8?O 件或.ISO 文件,通過NERO(或其他的刻錄軟體)把它刻錄下來,給Attack 和Sniff 機器各一
'QUqI R 張。
1r*kuuO!n3CNe 第 9 頁 共 23 頁
1P8x]'Lzg;x 首先把無線網卡插入到筆記本中(如果機器內置有無線網卡就最好不過了),再把筆記 QAc4sI u_#y
本設置成從光碟引導,並把Auditor Security Collection CD 放入光碟機中。從Auditor 引導菜,X d Ph Oqf
單中選擇合適的屏幕解析度後,Kanotix Linux 會被安裝到內存中運行並出現Auditor 開始屏
(S8M:OZ)`k%`0W 幕(如圖九所示)。-R"kU!NP$C6l
圖九:Auditor 的開始屏幕j*ohUd4O*z'O}E
在這個Auditor 系統中,兩個最重要的圖標是位於屏幕左下方的Programs 和
N-FU1n"LDJ C9c Command Line 圖標,我們以後的許多操作基本上都是要通過它們來完成的。如圖十所示。
Q:_;} k-F_4z W3{$@ 圖十:Program 和Command Line 的位置
(t}k#c;q 在這里,開始做其他任何其他的事情之前,先要確認我們機器上的無線網卡能夠通)s1X!a h.jhMi_9B
過Auditor 的驗證。單擊Command Line 圖標以打開一個命令行窗口,然後輸入iwconfig 命6X6j;yn/g@
令,在Auditor 顯示出的信息中,你會看到有關於「Wlan0」的信息,它是Auditor 為基於PRISM
P:\#M6Z-|-J 晶元的卡確定的一個名稱,如果用來操作攻擊的筆記本的屏幕顯示如圖十一所示的窗口,則"YRpCeC2PZ ^
表明Auditor 已檢測到了無線網卡,現在就可以開始下一步工作了。對於另外一台筆記本,
?t!y(Fy1t 也進行同樣的步驟,重復這一操作。
f` C3]@.a 第 10 頁 共 23 頁@.H3wE pU
圖十一:用iwconfig 命令檢驗無線網卡
#m `F]*I4e4W4g%D/a,A 好,准備工作現在基本完成,在本文的下篇里,我們將開始實際的解決過程。
b&wP-NbK R 三、實戰破解過程 pO'| j5S,|
1、用Kismet 進行網路探測8iT-vdWv,a1A
Kismet 是一個基於Linux 的無線網路掃描程序,這是一個相當方便的工具,通過測;Qfz!\ZX
量周圍的無線信號來找到目標WLev,\)s`
AN。雖說Kismet 也可以捕獲網路上的數據通信,但在還有其他更好的工具
TN"G8ro7\l*A 使用(如Airomp),在這里我們只使用它來確認無線網卡是否正常工作和用來掃描無線網
bj:kz}kT 絡,在下面的部分中將會換用不同的工具軟體來真正地偵聽和捕獲網路上的數據通信。
l Tft O|2x 單擊Programs 圖標,然後是Auditor,再 Wireless,, 然後Scanner/Analyzer,
3Pi1r)}w 最後是 Kismet ,來運行Kismet 程序。如圖十二所示。
-T*eK.w c q.vn 第 11 頁 共 23 頁
H'Fx4N[5U qH w;i 圖十二:運行Kismet
P(j9t%p-B9em 除掃描無線網路之外,Kismet 還可以捕獲網路中的數據包到一個文件中以方便以後X q6]Fd.UQ
加以分析使用,因此Kismet 會詢問用來存放捕獲數據包的文件的位置,如我想把這些文件e,o{,J,^$D v
保存到rootdesktop 下,則單擊「Desktop」,然後選擇「OK」即可,如圖十三所示。然後Kismet
0U"c%hJkC9w5De 然後會詢問捕獲文件的前綴名字,我們可以更改這個默認的名字,例如把它更改為「capture」w$hw3`%V8PWs{@(~
然後點擊OK,這樣Kismet 就會以capture 為文件名的開頭,再在其後依次添加序號來保存R)n;}I`R-j
捕捉下來的數據包到不同的文件中。Yg B-D'U8H/EW-kw
圖十三:在Kismet 中指定文件的存放位置
^+Z2I%Y O 第 12 頁 共 23 頁
a sV5xdp5bG 當Kismet 開始運行時,它將會顯示這個區域內它找到的所有的無線區域網,「Name」
!oj'fZn 那一列中所顯示出來的內容就是哪一個WLAN 中AP 的SSID 值,那當然開始設定的目標2mP0T}6w
WLAN 也應該包含中其中(Name 下值為starbucks 的那一行),在這一行中,CH 列的值(AP;`:J+q*o-^Gz4H/N
所使用的頻道)應該與開始所記下的相同。在窗口的最右邊顯示的信息是Kismet 發現的
+`RL YB+l5L!~;mH WLAN 的數目,已被捕捉下來了的數據包、已加密了的數據包的數目等等。如下圖十四所示。9P'Ahy,U
如果Kismet 發現了許多相鄰的Access Point,你應把這個實驗環境搬得離這些AP 更遠一些,
v&Qepx,C@DC 或者把與你網上相連接的任何高增益天線斷開。
!I'P.S qS1kgg$f 甚至當目標計算機已關閉時,Kismet 也正可從我們的目標AP 中檢測到數據包,這是因
u.e'T;U-WO+? 為目標AP 在不停地發出「beacons」,它將告之擁有無線網卡的計算機有一個AP 在此范圍內,"ho"L7VDk D ~8qN
我們可以這樣想3g,}!{'s T4oql
像,這台AP 宣布,「我的名字是XXXXX,請大家與我連接。」
rM5L/`w9W Rb 圖十四:Kismet 顯示的內容 w coO)g
默認的Kismet 是運行在「autofit」模式下的,它顯示的內容雜亂無章的,我們可以通
l DB#CW 過排序把AP 按任何有意義有順序來重新排列,按下「s」鍵到「Sort」菜單,在這兒可以按下某個
tg/d$h.v~"} 字母來對搜尋到的AP 進行排序,如「f」鍵是按AP 名字的第一個字母來排序,而「c」鍵是按AP
7?#J&Uyyc 使用的頻道來進行排序,「l」是按時間來進行排序等等。 f UvUO
現在我們來查看一下目標WLAN 中AP 的詳細信息,按下「s」鍵,然後再按下「c」鍵,
FgA?b4H9R|$J 把整個AP 的列表用頻道的方式來排列,使用游標鍵移動高亮條到表示目標AP 的SSID 上,l4}7YGB6M/Q

⑼ 中高級IOS開發程序員要具備哪些能力和技能

一、數據加密必備技能-密碼學
在網路加速發展的時代,數據安全已經是一個必不可少的技術課題。如何讓用戶數據、網路數據、內容數據安
全可靠,也是每個開發者需要深思並捍衛的。熟練掌握密碼學原理,了解 MD5 演算法、非對稱、對稱加密演算法底 層實現,以及如何運用到項目開發中。讓開發者實力捍衛數據安全!
1.密碼的起源歷史
2.Base 64 編碼格式、散列函數
3.MD5 &加鹽、HMAC加密
4.對稱加密演算法
5.RSA Openssl、數字簽名
二、RunLoop
RunLoop是iOS和OS X中非常基礎的一個概念,在開發中不常用,在面試中也幾乎是都會問到的一個問題.對RunLoop的概念以及底層實現原理,都是我們應該要掌握的,並且要知道在開發中哪些地方可以使用到RunLoop。
1.能理解RunLoop概念
2.知道RunLoop的使用方式
3.RunLoop在開發中的使用
三、Runtime
OC 縱橫 iOS 開發已經多年,但是我們真的了解他們?他到底是怎麼樣的一個底層原理?在使用上難道就真的只有
這樣?我們該如何更加掌握這門語言的應用?另外 OC 能做到的 Swift 也能做到嗎?
1.runtime 到底是什麼
2.runtime 怎麼運用
3.runtime 怎麼運用
4.siwft 中如何使用runtime
四、SDWebImage源碼的分析
在開發中, 為了提高工作的效率, 我們大都會引入很多的框架, 覺得只要能能完成自己的工作達到目的就行, 當然這沒錯,但是確忽略了很多好框架中的編程思想,和實現的邏輯, 只知道使用框架, 不知道它裡面的精髓, 長遠來說對我們的發展是不好的, 所以讓我們從經典的框架開始學起,一起來學習SDWebImage的精髓.
1.SDWebImage的demo的分析
2.SDWebImage緩存的概念
3.下載超時和圖片的格式區分
4.SDWebImage的清理機制和內存的監聽
五、H264編碼
扎克伯格說「視頻是未來facebook社交的最重要的行為之一」。作為開發而言,我們應該了解視頻如何做到編碼。在直播平台編碼的技術也是頻頻使用,讓我們從業務層跨往視頻編碼底層的第一步。
1.了解直播項目的架構以及技術突破點;
2.視頻組成原理
3.H264文件的結構
4.軟編碼和硬編碼的區別以及應用場景
5.硬編碼的原理
6.使用硬編碼編碼視頻文件
7.H264解碼的多種處理方式
六、AAC編碼
直播、音視頻項目已經是iOS 應用類的APP的中堅力量。解密音頻編碼過程,讓開發者不在對編碼諱莫如深。映客、全名K歌、網易雲音樂等等知名APP都會用到的音頻AAC編碼方式。
1.了解聲音從模擬信號到數字信號的原理
2.PCM編碼解析
3.AAC編碼原理
4.AAC文件的結構
5.音頻在軟編碼FFmpeg 和 硬編碼的區別
6.利用硬編碼編碼音頻
7.捕獲媒體數據,如何區分音視頻數據
8.利用FFmpeg 合成 H264文件和AAC文件到MP4容器中

⑽ 請問Access資料庫裡面的一些密碼是用什麼方式加密的

用Delphi採用ADO連接資料庫用以下方法可以實現:

//還原數據,以便自已使用資料庫
file(pchar(APP_path+'\data\account.db'),pchar(app_path+'data\temp.db'),false); //app_path表示程序的當前目錄,account.db是個更改了擴展名的MDB文件
uncrypMDB(App_path+'data\temp.db');
file(pchar(App_path+'data\temp.db'),pchar(APP_path+'\data\account.db'),false);
adoconn.connectionstring:='provider=Microsoft.Jet.OLEDB.4.0;Data Source='+App_path+'data\account.db;Persist Security Info=false'; //adocon是個TADOConnection組件
try
adoconn.connected:=true;
except
MessageBox(handle,'打開資料庫出現致命的錯誤!!!','錯誤',MB_OK+MB_ICONERROR);
end;
//打開後馬上對其加密
file(pchar(APP_path+'\data\account.db'),pchar(app_path+'data\temp.db'),false); //app_path表示程序的當前目錄,account.db是個更改了擴展名的MDB文件
EncrypMDB(App_path+'data\temp.db');
file(pchar(App_path+'data\temp.db'),pchar(APP_path+'\data\account.db'),false);
deletefile(App_path+'data\temp.db');
上面使用了兩次臨時文件,是因為資料庫打開後再對MDB進行直接的寫入會出現問題,而且你無法去確定多少個用戶打開了程序。
整個程序共用一個TADOConnection,只在打開資料庫連接的時候還原MDB文件,其它時間MDB文件一直都處於加密狀態!用戶復制了MDB文件一般很難知道它是什麼!

打開資料庫後會有一個.ldb文件,類型會出現ACCESS等字樣。
reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_CLASSES_ROOT;
reg.OpenKey('.ldb');
reg.WriteString(','tempfile');
finally
reg.closekey;
reg.free;
end;
這樣用戶看到的文件類型是tempfile,所以是比較安全的。

熱點內容
java方法定義 發布:2025-01-19 20:20:50 瀏覽:404
kr腳本 發布:2025-01-19 20:17:41 瀏覽:518
幫我開啟存儲 發布:2025-01-19 20:17:39 瀏覽:813
s9存儲縮水 發布:2025-01-19 20:08:06 瀏覽:335
2b2t的伺服器編號是什麼 發布:2025-01-19 19:58:55 瀏覽:874
androidstudio下載與安裝 發布:2025-01-19 19:58:14 瀏覽:560
拉鉤演算法 發布:2025-01-19 19:58:14 瀏覽:866
python中讀取文件 發布:2025-01-19 19:37:26 瀏覽:369
網吧電腦連接到steam伺服器錯誤 發布:2025-01-19 19:37:17 瀏覽:602
mc怎麼在別人的伺服器開創造 發布:2025-01-19 19:37:16 瀏覽:71