導航:首頁 > 文檔加密 > rc4對稱怎麼加密

rc4對稱怎麼加密

發布時間:2022-10-01 11:38:02

㈠ 如何用rc4 加密演算法對excel vba進行加密

我就是專門做破解工作的,沒有說普通的加密很容易破解,你有密碼里加入大小寫,特殊符號以及空格,或者在加上幾個其它國家的語言文子(比如日文)10位以上,這樣就很難破解了,
如果這樣不行的話,你用最新版本的RAR(壓縮包加密)位數多一點,再加上大小寫,特殊符號以及空格或者在加上幾個其它國家的語言文字(比如日文)10位以上,目前基本無法破解,破解軟體對這種遠算只能達到一秒幾次。
namespace CryptoRC4
{
using System;
using System.Text;

public class clsRC4Engine
{
private static long m_nBoxLen = 255;

protected clsRC4Engine()
{

}
private static void GetKeyBytes( string Key, out byte[] m_nBox )
{
long index2 = 0;
m_nBox = new byte[m_nBoxLen];
Encoding ascii = Encoding.ASCII;
Encoding unicode = Encoding.Unicode;
byte[] asciiBytes = Encoding.Convert(unicode,ascii, unicode.GetBytes( Key ));
char[] asciiChars = new char[ascii.GetCharCount(asciiBytes,0,asciiBytes.Length)];

ascii.GetChars(asciiBytes,0,asciiBytes.Length,asciiChars,0);
long KeyLen = Key.Length;
for ( long count = 0; count < m_nBoxLen ; count ++ )
{
m_nBox[count] = (byte)count;
}
for ( long count = 0; count < m_nBoxLen ; count ++ )
{

index2 = (index2 + m_nBox[count] + asciiChars[ count % KeyLen ]) % m_nBoxLen;
byte temp = m_nBox[count];
m_nBox[count] = m_nBox[index2];
m_nBox[index2] = temp;
}
}

private static bool GetEncryptBytes( string sData, byte[] m_nBox,out byte[] EncryptedBytes )
{
EncryptedBytes = null;
bool toRet = true;
try
{
long i=0;
long j=0;
Encoding enc_default = Encoding.Unicode;
byte[] input = enc_default.GetBytes( sData );
EncryptedBytes = new byte[input.Length];
byte[] n_LocBox = new byte[m_nBoxLen];
m_nBox.CopyTo(n_LocBox,0);
long ChipherLen = input.Length + 1;
for ( long offset = 0; offset < input.Length ; offset++ )
{
i = ( i + 1 ) % m_nBoxLen;
j = ( j + n_LocBox[i] ) % m_nBoxLen;
byte temp = n_LocBox[i];
n_LocBox[i] = n_LocBox[j];
n_LocBox[j] = temp;
byte a = input[offset];
byte b = n_LocBox[(n_LocBox[i]+n_LocBox[j])% m_nBoxLen];
EncryptedBytes[offset] = (byte)((int)a^(int)b);
}
}
catch
{
EncryptedBytes = null;

toRet = false;
}
return toRet;
}

public static bool Encrypt( string sData, string Key, out string EncryptedString )
{
EncryptedString = null;

if( sData == null || Key == null ) return false;

byte[] m_nBox;

GetKeyBytes( Key, out m_nBox );

byte[] output;

if( GetEncryptBytes( sData, m_nBox, out output ) )

{

// Convert data to hex-data

EncryptedString = "";

for( int i = 0; i < output.Length; i++ )

EncryptedString += output[i].ToString( "X2" );

return true;

}

else

return false;
}

/// <summary>

/// Decrypt data using specific key

/// </summary>

/// <param name="EncryptedString"></param>

/// <param name="Key"></param>

/// <param name="sData"></param>

/// <returns></returns>

public static bool Decrypt( string EncryptedString, string Key, out string sData )

{

sData = null;

if( EncryptedString == null || Key == null ) return false;

else if( EncryptedString.Length % 2 != 0 ) return false;

byte[] m_nBox;

GetKeyBytes( Key, out m_nBox );

// Convert data from hex-data to string

byte[] bData = new byte[EncryptedString.Length / 2];

for( int i = 0; i < bData.Length; i++ )

bData[i] = Convert.ToByte( EncryptedString.Substring( i * 2, 2 ), 16 );

EncryptedString = Encoding.Unicode.GetString( bData );

byte[] output;

if( GetEncryptBytes( EncryptedString, m_nBox, out output ) )

{

sData = Encoding.Unicode.GetString( output );

return true;

}

else

return false;

}

}

}

調用:

//Encrypt data

string strEncryptedString;

if( clsRC4Engine.Encrypt( strValue, strKey, out strEncryptedString ) )

MessageBox.Show( strEncryptedString );

//Decrypt data

string strDecryptedString;

if( clsRC4Engine.Decrypt( strValue, strKey, out strDecryptedString ) )

MessageBox.Show( strDecryptedString );

另外一種
public static string encrypt_str( string str )
{
string s = "";
int i_Encrypt = ClsSetConst.m_Set_Encrypt;
char[] s_array = str.ToCharArray();
for(int i = 0; i < s_array.Length; i++)
{
int x = ((int)s_array[i]) + i_Encrypt;
s += (char)(x);
}
return s;
}
public void decript_str(string str)
{
string s = "";
int i_Encrypt = ClsSetConst.m_Set_Encrypt;
char[] s_array = str.ToCharArray();
for(int i = 0; i < s_array.Length; i++)
{
int x = ((int)s_array[i]) - i_Encrypt;
s += (char)x;
}
自己看看有沒有輸錯的地方吧

php如何對文件進行RC4加密

1.原始鑰匙 key
2.md5(md5+常量) 加密原始key => mkey
3.mkey 作為AC4的密匙 ac_mkey
4.ac_mkey 對加密數據 進行 AC4 加密 得到AC4密碼
5.AC4密碼 在進行一次 AC4加密可還原 加密數據
簡單來說,一句話,用md5 做AC4的密匙
以下是代碼
<?php
/*
* rc4加密演算法
* $pwd 密鑰
* $data 要加密的數據
*/
function rc4 ($pwd, $data)//$pwd密鑰 $data需加密字元串
{
$key[] ="";
$box[] ="";

$pwd_length = strlen($pwd);
$data_length = strlen($data);

for ($i = 0; $i < 256; $i++)
{
$key[$i] = ord($pwd[$i % $pwd_length]);
$box[$i] = $i;
}

for ($j = $i = 0; $i < 256; $i++)
{
$j = ($j + $box[$i] + $key[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}

for ($a = $j = $i = 0; $i < $data_length; $i++)
{
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;

$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;

$k = $box[(($box[$a] + $box[$j]) % 256)];
$cipher .= chr(ord($data[$i]) ^ $k);
}

return $cipher;
}

$key = '5201314'; //原始KEY
$pwd = md5(md5($key).'我是常量'); //md5+常量
$data = '我愛北京天安門'; //要加密的數據
$cipher = rc4($pwd, $data); //AC4 加密演算法
$c = rc4($pwd, $cipher); //AC4 加密演算法還原 (還原只需要重新加密一次)
echo '<pre>';
var_mp($key);
var_mp($pwd);
var_mp($data);
var_mp($cipher);
var_mp($c);
?>

㈢ 無線網路信號傳輸機制的採用加密法保護無線信號

除了上面的幾種方法能夠保護無線區域網的工作安全性外,還有一種比較有效的保護方法,那就是對無線傳輸信號進行加密,這種方法往往具有很高的安全防範效果。
當前無線節點設備比較常用的加密方法包括兩種,一種是WEP加密技術,另外一種就是WPA加密技術。其中WEP技術也叫對等保密技術,該技術一般在網路鏈路層進行RC4對稱加密,無線上網用戶的密鑰內容一定要與無線節點的密鑰內容完全相同,才能正確地訪問到網路內容,這樣就能有效避免非授權用戶通過監聽或其他攻擊手段來偷偷訪問本地無線網路。正常來說,WEP加密技術為我們普通用戶提供了40位、128位甚至152位長度的幾種密鑰演算法機制。一旦無線上網信號經過WEP加密後,本地無線網路附近的非法用戶即使通過專業工具竊取到上網傳輸信號,他們也無法看到其中的具體內容,如此一來本地無線上網信號就不容易對外泄密了,那麼無線區域網的數據發送安全性和接收安全性就會大大提高了。而且WEP加密的選用位數越高,非法用戶破解無線上網信號的難度就越大,本地無線網路的安全系數也就越高。 因為WEP加密技術先天性不足,催生了另外一個更加安全的加密技術-WPA的出現,這種加密技術可以看作是WEP加密技術的增強產品,它比WEP加密技術更具安全性和保護性,這種加密技術包含TKIP加密方式和AES加密方式。

㈣ 十大常見密碼加密方式

一、密鑰散列

採用MD5或者SHA1等散列演算法,對明文進行加密。嚴格來說,MD5不算一種加密演算法,而是一種摘要演算法。無論多長的輸入,MD5都會輸出一個128位(16位元組)的散列值。而SHA1也是流行的消息摘要演算法,它可以生成一個被稱為消息摘要的160位(20位元組)散列值。MD5相對SHA1來說,安全性較低,但是速度快;SHA1和MD5相比安全性高,但是速度慢。

二、對稱加密

採用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密。對稱加密演算法中常用的演算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

三、非對稱加密

非對稱加密演算法是一種密鑰的保密方法,它需要兩個密鑰來進行加密和解密,這兩個密鑰是公開密鑰和私有密鑰。公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密。非對稱加密演算法有:RSA、Elgamal、背包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)。

四、數字簽名

數字簽名(又稱公鑰數字簽名)是只有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是在使用了公鑰加密領域的技術來實現的,用於鑒別數字信息的方法。

五、直接明文保存

早期很多這樣的做法,比如用戶設置的密碼是「123」,直接就將「123」保存到資料庫中,這種是最簡單的保存方式,也是最不安全的方式。但實際上不少互聯網公司,都可能採取的是這種方式。

六、使用MD5、SHA1等單向HASH演算法保護密碼

使用這些演算法後,無法通過計算還原出原始密碼,而且實現比較簡單,因此很多互聯網公司都採用這種方式保存用戶密碼,曾經這種方式也是比較安全的方式,但隨著彩虹表技術的興起,可以建立彩虹表進行查表破解,目前這種方式已經很不安全了。

七、特殊的單向HASH演算法

由於單向HASH演算法在保護密碼方面不再安全,於是有些公司在單向HASH演算法基礎上進行了加鹽、多次HASH等擴展,這些方式可以在一定程度上增加破解難度,對於加了「固定鹽」的HASH演算法,需要保護「鹽」不能泄露,這就會遇到「保護對稱密鑰」一樣的問題,一旦「鹽」泄露,根據「鹽」重新建立彩虹表可以進行破解,對於多次HASH,也只是增加了破解的時間,並沒有本質上的提升。

八、PBKDF2

該演算法原理大致相當於在HASH演算法基礎上增加隨機鹽,並進行多次HASH運算,隨機鹽使得彩虹表的建表難度大幅增加,而多次HASH也使得建表和破解的難度都大幅增加。

九、BCrypt

BCrypt 在1999年就產生了,並且在對抗 GPU/ASIC 方面要優於 PBKDF2,但是我還是不建議你在新系統中使用它,因為它在離線破解的威脅模型分析中表現並不突出。

十、SCrypt

SCrypt 在如今是一個更好的選擇:比 BCrypt設計得更好(尤其是關於內存方面)並且已經在該領域工作了 10 年。另一方面,它也被用於許多加密貨幣,並且我們有一些硬體(包括 FPGA 和 ASIC)能實現它。 盡管它們專門用於采礦,也可以將其重新用於破解。

㈤ uniapp如何加密解密rc4

uniapp如何加密解密rc4步驟:
1、第一步是生成S盒
2、初始排列S然後用T產生S的初始置換.從S到S255,對每個Si,根據由Ti確定的方案,將Si置換為S中的另一位元組
3、產生密鑰流矢量S一旦完成初始化,輸人密鑰就不再被使用。
4、最後進行異或運算data與key按位異或操作

㈥ 對稱加密演算法的加密演算法主要有哪些

1、3DES演算法

3DES(即Triple DES)是DES向AES過渡的加密演算法(1999年,NIST將3-DES指定為過渡的加密標准),加密演算法,其具體實現如下:設Ek()和Dk()代表DES演算法的加密和解密過程,K代表DES演算法使用的密鑰,M代表明文,C代表密文,這樣:

3DES加密過程為:C=Ek3(Dk2(Ek1(M)))

3DES解密過程為:M=Dk1(EK2(Dk3(C)))

2、Blowfish演算法

BlowFish演算法用來加密64Bit長度的字元串。

BlowFish演算法使用兩個「盒」——unsignedlongpbox[18]和unsignedlongsbox[4,256]。

BlowFish演算法中,有一個核心加密函數:BF_En(後文詳細介紹)。該函數輸入64位信息,運算後,以64位密文的形式輸出。用BlowFish演算法加密信息,需要兩個過程:密鑰預處理和信息加密。

分別說明如下:

密鑰預處理:

BlowFish演算法的源密鑰——pbox和sbox是固定的。我們要加密一個信息,需要自己選擇一個key,用這個key對pbox和sbox進行變換,得到下一步信息加密所要用的key_pbox和key_sbox。具體的變化演算法如下:

1)用sbox填充key_sbox

2)用自己選擇的key8個一組地去異或pbox,用異或的結果填充key_pbox。key可以循環使用。

比如說:選的key是"abcdefghijklmn"。則異或過程為:

key_pbox[0]=pbox[0]abcdefgh;

key_pbox[1]=pbox[1]ijklmnab;

…………

…………

如此循環,直到key_pbox填充完畢。

3)用BF_En加密一個全0的64位信息,用輸出的結果替換key_pbox[0]和key_pbox[1],i=0;

4)用BF_En加密替換後的key_pbox,key_pbox[i+1],用輸出替代key_pbox[i+2]和key_pbox[i+3];

5)i+2,繼續第4步,直到key_pbox全部被替換;

6)用key_pbox[16]和key_pbox[17]做首次輸入(相當於上面的全0的輸入),用類似的方法,替換key_sbox信息加密。

信息加密就是用函數把待加密信息x分成32位的兩部分:xL,xRBF_En對輸入信息進行變換。

3、RC5演算法

RC5是種比較新的演算法,Rivest設計了RC5的一種特殊的實現方式,因此RC5演算法有一個面向字的結構:RC5-w/r/b,這里w是字長其值可以是16、32或64對於不同的字長明文和密文塊的分組長度為2w位,r是加密輪數,b是密鑰位元組長度。

(6)rc4對稱怎麼加密擴展閱讀:

普遍而言,有3個獨立密鑰的3DES(密鑰選項1)的密鑰長度為168位(三個56位的DES密鑰),但由於中途相遇攻擊,它的有效安全性僅為112位。密鑰選項2將密鑰長度縮短到了112位,但該選項對特定的選擇明文攻擊和已知明文攻擊的強度較弱,因此NIST認定它只有80位的安全性。

對密鑰選項1的已知最佳攻擊需要約2組已知明文,2部,2次DES加密以及2位內存(該論文提到了時間和內存的其它分配方案)。

這在現在是不現實的,因此NIST認為密鑰選項1可以使用到2030年。若攻擊者試圖在一些可能的(而不是全部的)密鑰中找到正確的,有一種在內存效率上較高的攻擊方法可以用每個密鑰對應的少數選擇明文和約2次加密操作找到2個目標密鑰中的一個。

㈦ 在密碼學中,常見的對稱加密演算法有哪些各有什麼特點

常見的對稱加密演算法有:
DES ——密鑰短,使用時間長,硬體計算快於軟體。
IDEA——個人使用不受專利限制,可抵抗差分攻擊,基於三個群。
AES ——可變密鑰長,可變分組長。
以上三個屬於塊式,明文按分組加密。
RC4 ——流式加密,不需填充明文,密鑰長度可變。

㈧ 對稱密碼體制的內容和典型演算法

內容:在對稱加密系統中,加密和解密採用相同的密鑰。因為加解密密鑰相同,需要通信的雙方必須選擇和保存他們共同的密鑰,各方必須信任對方不會將密鑰泄密出去,這樣就可以實現數據的機密性和完整性。

演算法:DES(Data Encryption Standard數據加密標准)演算法及其變形Triple DES(三重DES),GDES(廣義DES);歐洲的IDEA;日本的FEAL N、RC5等。

Triple DES使用兩個獨立的56bit密鑰對交換的信息進行3次加密,從而使其有效長度達到112bit。RC2和RC4方法是RSA數據安全公司的對稱加密專利演算法,它們採用可變密鑰長度的演算法。通過規定不同的密鑰長度,,C2和RC4能夠提高或降低安全的程度。

(8)rc4對稱怎麼加密擴展閱讀:

密碼體制的基本模式:

通常的密碼體制採用移位法、代替法和代數方法來進行加密和解密的變換,可以採用一種或幾種方法結合的方式作為數據變換的基本模式,下面舉例說明:

移位法也叫置換法。移位法把明文中的字元重新排列,字元本身不變但其位置改變了。

例如最簡單的例子:把文中的字母和字元倒過來寫。

或將密文以固定長度來發送

5791ECNI SYLDIPAT DEVLOBES AHYTIRUC ESATAD**。

㈨ 無線網路傳輸機制的採用加密法保護無線信號

除了上面的幾種方法能夠保護無線區域網的工作安全性外,還有一種比較有效的保護方法,那就是對無線傳輸信號進行加密,這種方法往往具有很高的安全防範效果。
當前無線節點設備比較常用的加密方法包括兩種,一種是WEP加密技術,另外一種就是WPA加密技術。其中WEP技術也叫對等保密技術,該技術一般在網路鏈路層進行RC4對稱加密,無線上網用戶的密鑰內容一定要與無線節點的密鑰內容完全相同,才能正確地訪問到網路內容,這樣就能有效避免非授權用戶通過監聽或其他攻擊手段來偷偷訪問本地無線網路。正常來說,WEP加密技術為我們普通用戶提供了40位、128位甚至152位長度的幾種密鑰演算法機制。一旦無線上網信號經過WEP加密後,本地無線網路附近的非法用戶即使通過專業工具竊取到上網傳輸信號,他們也無法看到其中的具體內容,如此一來本地無線上網信號就不容易對外泄密了,那麼無線區域網的數據發送安全性和接收安全性就會大大提高了。而且WEP加密的選用位數越高,非法用戶破解無線上網信號的難度就越大,本地無線網路的安全系數也就越高。
不過WEP加密技術也存在明顯缺陷,比方說同一個無線區域網中的所有用戶往往都共享使用相同的一個密鑰,只有其中一個用戶丟失了密鑰,那麼整個無線區域網網路都將變得不安全。而且考慮到WEP加密技術已經被發現存在明顯安全缺陷,非法用戶往往能夠在有限的幾個小時內就能將加密信號破解掉。
因為WPA加密技術先天性不足,催生了另外一個更加安全的加密技術-WPA的出現,這種加密技術可以看作是WEP加密技術的增強產品,它比WEP加密技術更具安全性和保護性,這種加密技術包含TKIP加密方式和AES加密方式。
在為無線節點設備設置加密密鑰時,我們可以使用兩種方式來進行,一種方式比較簡單,另外一種方式則不那麼簡單。比較簡單的方式就是我們可以使用無線節點設備中自帶的密鑰生成器來自動生成密鑰,另外一種方式就是我們採用手工方法選擇合適的加密密鑰,比方說我們可以使用字母A-F和數字0-9的組合來混合設置加密密鑰。
要對無線上網信號進行加密時,我們可以先從普通無線工作站中運行IE瀏覽器程序,並在瀏覽窗口中輸入無線節點設備默認的後台管理地址,之後正確輸入管理員帳號名稱以及密碼,進入到該設備的後台管理頁面,單擊該頁面中的「首頁」選項卡,並在對應選項設置頁面的左側顯示區域單擊「無線網路」項目,在對應該項目的右側列表區域,找到「安全方式」設置選項,並用滑鼠單擊該設置項旁邊的下拉按鈕,從彈出的下拉列表中我們可以看到無線節點設備一般能夠同時支持「WEP」加密協議和「WPA」加密協議。
選中最常用的「WEP」加密協議,之後選擇好合適的身份驗證方式,一般無線節點設備都為用戶提供了共享密鑰、自動選擇以及開放系統這三個驗證方式,為了有效保護無線網路傳輸信息的安全,我們應該在這里選用「共享密鑰」驗證方式。接著在「WEP密碼」文本框中正確輸入合適的無線網路訪問密碼,再單擊對應設置頁面中的「執行」按鈕,以便保存好上面的設置操作,最後將無線節點設備重新啟動一下,如此一來我們就在無線節點設備中成功地對本地無線網路進行了加密

閱讀全文

與rc4對稱怎麼加密相關的資料

熱點內容
如何在vps上搭建自己的代理伺服器 瀏覽:742
nginxphp埠 瀏覽:401
內臟pdf 瀏覽:150
怎麼看雲伺服器架構 瀏覽:83
我的世界國際服為什麼登不進伺服器 瀏覽:994
微盟程序員老婆 瀏覽:928
intellij創建java 瀏覽:110
java連接odbc 瀏覽:38
啟動修復無法修復電腦命令提示符 瀏覽:359
手機編程是什麼 瀏覽:98
山東移動程序員 瀏覽:163
蘇州java程序員培訓學校 瀏覽:477
單片機液晶驅動 瀏覽:854
魔拆app里能拆到什麼 瀏覽:130
新預演算法的立法理念 瀏覽:144
wdcpphp的路徑 瀏覽:134
單片機p0口電阻 瀏覽:926
瀏覽器中調簡訊文件夾 瀏覽:594
五菱宏光空調壓縮機 瀏覽:68
為什麼app佔用幾百兆 瀏覽:680