『壹』 如何對web.config進行加密和解密
1. 加密通用語法
加密一個特定網站的web.config文件的通用形式
aspnet_regiis.exe -pef secion physical_directory -prov provider
或
aspnet_regiis.exe -pe secion -app virtual_directory -prov provider
其中,各個參數的含義如下:
section表示要加密的配置節
physical_directory用於指定站點的物理路徑。
virtual_directory用戶指定虛擬路徑。
provider指定加密提供程序。
加密一個特定站點的連接字元串就是:
aspnet_regiis.exe -pef "connectionStrings" "你的web項目路徑" -prov ""
其中是Windows數據保護API(DPAPI)提供程序,它使用Windows內置的密碼學技術來加解密配置節。默認情況下,這個提供程序使用本機的密鑰。
2. 加密方法
運行Visual Studio 2008命令提示
加密後的結果
[xhtml] view plain
<connectionStrings configProtectionProvider="">
<EncryptedData>
<CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo++bAce//lsg/so66+//LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/+lZtAj8lzf2bK+/L0+6bizStRZ7BDnOngV//CVDQ==</CipherValue>
</CipherData>
</EncryptedData>
lt;/connectionStrings>
3. 解密
解密該連接字元串也很簡單
aspnet_regiis.exe -pdf "connectionStrings" '你的web項目路徑"
解密後的結果:
[xhtml] view plain
<connectionStrings>
<add name="Sql" connectionString="Data Source=.;Initial Catalog=MySchool;Integrated Security=True" />
</connectionStrings>
4. 後台代碼讀取配置文件web.config中資料庫連接字元串的方法:
[c-sharp] view plain
using System.Configuation;
…
protected void Page_Load(object sender, EventArgs e)
{
lblMessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();
}
…
5. 在連接字元串的加密和解密的過程中,需要注意一下幾點。
使用加密的連接字元串
使用加密的連接字元串不需要編碼解密,ASP.NET會自動對加密內容進行解密。
加密和解密在同一台計算機上使用
在加密過程中,使用了一個基於本機的密鑰。這就意味著加密和解密必須在同一台計算機上進行,否則將不能解密。同時,在一台計算機上加密的配置,在另一台計算機上將不能正常使用。
中文路徑問題
該命令對中文支持不是很好。如果站點的路徑中有中文字元,也許不能正常加解密。
『貳』 如何給windowsXP系統加密和解密希望可以有詳細的操作過程
Windows中EFS加密及解密應用
EFS特點簡介
Windows 2000/XP/Server 2003都配備了EFS(Encrypting File System,加密檔案系統),它可以幫助您針對存儲在NTFS磁碟卷上的文件和文件夾執行加密操作。如果硬碟上的文件已經使用了EFS進行加密,即使黑客能訪問到你硬碟上的文件,由於沒有解密的密鑰,文件也是不可用的。
EFS加密基於公鑰策略。在使用EFS加密一個文件或文件夾時,系統首先會生成一個由偽隨機數組成的FEK(File Encryption Key,文件加密鑰匙),然後將利用FEK和數據擴展標准X演算法創建加密後的文件,並把它存儲到硬碟上,同時刪除未加密的原始文件。接下來系統利用你的公鑰加密FEK,並把加密後的FEK存儲在同一個加密文件中。而在訪問被加密的文件時,系統首先利用當前用戶的私鑰解密FEK,然後利用FEK解密出文件。在首次使用EFS時,如果用戶還沒有公鑰/私鑰對(統稱為密鑰),則會首先生成密鑰,然後加密數據。如果你登錄到了域環境中,密鑰的生成依賴於域控制器,否則它就依賴於本地機器。
說起來非常復雜,但是實際使用過程中就沒有那麼麻煩了。EFS加密的用戶驗證過程是在登錄Windows時進行的,只要登錄到Windows,就可以打開任何一個被授權的加密文件。換句話說,EFS加密系統對用戶是透明的。這也就是說,如果你加密了一些數據,那麼你對這些數據的訪問將是完全允許的,並不會受到任何限制。而其他非授權用戶試圖訪問你加密過的數據時,就會收到「訪問拒絕」的錯誤提示(圖1)。
如果把未加密的文件復制到經過加密的文件夾中,這些文件將會被自動加密。若是將加密數據移出來,如果移動到NTFS分區上,數據依舊保持加密屬性。被EFS加密過的數據不能在Windows中直接共享。如果通過網路傳輸經EFS加密過的數據,這些數據在網路上將會以明文的形式傳輸。NTFS分區上保存的數據還可以被壓縮,但是一個文件不能同時被壓縮和加密。再有,Windows的系統文件和系統文件夾無法被加密。
要提醒大家的是:要使用EFS加密功能,首先要保證操作系統是Windows 2000/XP/Server 2003,Windows 98/Me操作系統就無緣使用了。其次要保證文件所在的分區格式是NTFS格式,FAT32分區里的數據是無法加密的。如果你要使用EFS加密,必須將FAT32格式轉換為NTFS。
EFS應用實例
讓我們看看如何給文件夾加密。右擊選擇要加密的文件夾,選擇快捷菜單中的「屬性」,選擇「常規」標簽中的最下方「屬性」 「高級」,在「壓縮或加密屬性」一欄中,把「加密內容以便保護數據」打上√(圖2),點「確定」。回到文件屬性點「應用」,彈出「確認屬性更改」窗口,在「將該應用用於該文件夾、子文件夾和文件」打上「√」,點「確定」。這樣這個文件夾里的原來有的以及新建的所有文件和子文件夾都被自動加密了。要解開加密的文件夾,把「加密內容以便保護數據」前面的「√」去掉,點確定就可以了。
1.將EFS選項添加至快捷菜單
如果想將EFS選項添加至快捷菜單,請依次執行下列操作步驟:在「運行」對話框內輸入regedit,在注冊表編輯器內瀏覽至下列子鍵:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced,然後新建一個DWORD值EncryptionContextMenu,並將它的鍵值設為1。注意,為確保對注冊表進行修改,應在自己的計算機上擁有管理員帳號。這樣當用戶右鍵單擊某一存儲於NTFS磁碟卷上的文件或文件夾時,加密或解密選項便會出現在隨後彈出的快捷菜單上(圖3),非常方便。
2.禁用EFS
如果你不喜歡EFS,可以徹底禁用它。只要在「運行」中輸入Regedit並回車,打開注冊表編輯器,依次展開到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EFS,然後新建一個Dword值EfsConfiguration,並將其鍵值設為1,這樣本機的EFS加密就被徹底禁用了。
3. 跳過不加密父文件夾下的某個子文件夾
在加密的過程中我們常常遇到這樣的事情,我們需要加密某一個文件夾,而此文件夾下還有很多的子文件夾,這時候我們如果不想加密位於此文件夾下的某一個子文件夾該怎麼辦呢?很多的用戶往往採取的方法是將不需要加密的子文件夾剪切出來,單獨存放,然後再加密文件夾。可是這樣一來卻破壞了原來的目錄結構,加密和保持原有的目錄結構好象是魚與熊掌不可兼得,怎麼辦?其實你大可不必這么辛苦,只需要在不需要加密的子文件夾下建立一個「Desktop.ini」文件即可。具體地說就是在不需要加密的子文件夾下建立一個名為「Desktop.ini」的文件,用記事本程序打開錄入以下內容:
[encryption]
Disable=1
錄入完畢保存並關閉該文件,以後要加密父文件夾的時候,當加密到該子文件夾就會遇到錯誤的信息,如圖所示(圖4),點「忽略」按鈕就可以跳過對該子文件夾的加密,但其父文件夾的加密不會受到絲毫的影響。
4.在命令提示符下加密、解密文件
有些用戶喜歡在命令提示符下工作,EFS也早為這些用戶准備好了。用CIPHER命令即可輕松完成對文件和文件夾的加密、解密工作。其命令格式如下:
CIPHER [/E /D] 文件夾或文件名 [參數]
例如要給F盤根目錄下的abcde文件夾加密就輸入:「CIPHER /e f:\abcde」,如圖所示(圖5),回車後即可完成對文件夾的加密。要給F盤根目錄下的abcde文件夾解密則輸入:「CIPHER /D f:\abcde」,回車後即可完成對文件夾的解密。/E是加密參數,/D是解密參數,其它更多的參數和用法請在命令提示符後輸入:「CIPHER /?」來查看。
EFS加密的破解
在EFS加密體系中,數據是靠FEK加密的,而FEK又會跟用戶的公鑰一起加密保存;解密的時候順序剛好相反,首先用私鑰解密出FEK,然後用FEK解密數據。可見,用戶的密鑰在EFS加密中起了很大作用。
密鑰又是怎麼來的呢?在Windows 2000/XP中,每一個用戶都有一個SID(Security Identifier,安全標識符)以區分各自的身份,每個人的SID都是不相同的,並且有唯一性。可以這樣理解:把SID想像為人的指紋,雖然同名同姓甚至同時出生的人很多,但世界上任意兩個人的指紋卻完全不同。因此,這具有唯一性的SID就保證了EFS加密的絕對安全和可靠。因為理論上沒有SID相同的用戶,因而用戶的密鑰也就絕不會相同。在第一次加密數據時,系統就會根據SID生成加密者(該用戶)的密鑰,並且會把公鑰及私鑰分開保存,供用戶加密和解密數據使用。
許多人由此就認為使用EFS加密非常安全,可是現在網上有一款叫做Advanced EFS Data Recovery的軟體就可以破解EFS加密!不過使用該軟體有個前提,那就是硬碟上要保留有相應的密鑰,而且該軟體目前僅能破解經過Windows 2000加密的文件,對Windows XP的加密還無法破解,所以使用XP的朋友可以安心一段時間了。一段時間以後呢?我也不知道,我只知道世上沒有不透風的牆。大家可以從網上下載該軟體的試用版,試用版只能解密文件的前512位元組。
現在,假設我們的Windows 2000安裝在C盤,事先用Administrators組的賬戶Work加密了一個文本文件efs1.txt。注銷該賬戶,用同屬於Administrators組的另一個賬戶Luck登錄,直接打開efs1.txt文件試試,看到「訪問拒絕」的錯誤提示了吧?這說明經過EFS加密後的文件非授權用戶的確無法訪問。接下來運行Advanced EFS Data Recovery,在「EFS Related Files」標簽下點擊右側的「Scan For keys」,然後指定在C盤中掃描密鑰,圖中顯示為綠色的就是可用密鑰(圖6)。然後點擊「Encrypted files」標簽,再點擊右側的「Scan for encrypted files」按鈕,在D盤上搜索所有加密文件,會得到如圖所示的結果(圖7),其中的efs1.txt就是我們事先加密的文件,點擊「Save files」按鈕指定保存的位置即可。打開該文件看看,沒有任何問題,該文件已經被解密了。
注意,如果你要解密的文件比較大的話,那就需要使用注冊版,否則無法破解。
『叄』 如何對web.config進行加密和解密
在WEB網站開發過程中,如果我們將資料庫連接字元串封裝到.DLL文件中,將會給資料庫和程序的遷移帶來麻煩,因為萬一伺服器地址或
者資料庫發生變更,那麼我們就不得不修改源程序並重新將其編譯。更好的解決方法是將資料庫連接字元串寫入到web.config配置文件中,可問題是將連
接字元串寫入到web.config文件中之後,任何人都能打開看到所連接的資料庫名和密碼,又會帶來安全隱患,因此為了保證資料庫的安全性,我們可以通
過使用微軟IDE自帶的命令aspnet_regiis.exe將配置文件web.config中指定的標簽進行加密,如果以後想查看加密後的連接字元
串,我們還可以使用aspnet_regiis.exe將加密後的字元串進行解密。
1. 加密通用語法
加密一個特定網站的web.config文件的通用形式
aspnet_regiis.exe -pef secion physical_directory -prov provider
或
aspnet_regiis.exe -pe secion -app virtual_directory -prov provider
其中,各個參數的含義如下:
section表示要加密的配置節
physical_directory用於指定站點的物理路徑。
virtual_directory用戶指定虛擬路徑。
provider指定加密提供程序。
加密一個特定站點的連接字元串就是:
aspnet_regiis.exe -pef "connectionStrings" "你的web項目路徑" -prov ""
其中是Windows數據保護API(DPAPI)提供程序,它使用Windows內置的密碼學技術來加解密配置節。默認情況下,這個提供程序使用本機的密鑰。
2. 加密方法
運行Visual Studio 2008命令提示
加密後的結果
<connectionStrings configProtectionProvider="">
<EncryptedData>
<CipherData> <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAy1WyvzomB0WAlqYo++bAce//lsg/so66+//LD9H9WQ9uF3t/0MoMI9tbrWdFJ1Yu5/e3PAV4RCbCvDlPD0VC7hxtDMqfRjQ+1OhTdk2woiSNpx0TzXwZE25o4vlXq/+lZtAj8lzf2bK+/L0+6bizStRZ7BDnOngV//CVDQ==</CipherValue>
</CipherData>
</EncryptedData>
lt;/connectionStrings>
3. 解密
解密該連接字元串也很簡單
aspnet_regiis.exe -pdf "connectionStrings" '你的web項目路徑"
解密後的結果:
<connectionStrings>
<add name="Sql" connectionString="Data Source=.;Initial Catalog=MySchool;Integrated Security=True" />
</connectionStrings>
4. 後台代碼讀取配置文件web.config中資料庫連接字元串的方法:
using System.Configuation;
…
protected void Page_Load(object sender, EventArgs e)
{
lblMessage.Text = ConfigurationManager.ConnectionStrings["Sql"].ToString();
}
…
5. 在連接字元串的加密和解密的過程中,需要注意一下幾點。
使用加密的連接字元串
使用加密的連接字元串不需要編碼解密,ASP.NET會自動對加密內容進行解密。
加密和解密在同一台計算機上使用
在加密過程中,使用了一個基於本機的密鑰。這就意味著加密和解密必須在同一台計算機上進行,否則將不能解密。同時,在一台計算機上加密的配置,在另一台計算機上將不能正常使用。
中文路徑問題
該命令對中文支持不是很好。如果站點的路徑中有中文字元,也許不能正常加解密。
『肆』 C++ 寫一帶命令參數的文本加密/解密程序。
#include <string.h>
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char **argv)
{
if (argc < 3)
{
cout << "Usage : test.exe /user:someone /pwd:password" << endl;
exit(-1);
}
const char *user = "someone";
const char *pswd = "something";
char *u = argv[1], *p = argv[2];
while (*u++ != ':');
while (*p++ != ':');
if (strcmp(u, user) || strcmp(p, pswd))
{
cout << "User name or Password invalid! exiting.." << endl;
exit(-1);
}
cout << "Hello, " << user << endl;
system("PAUSE");
return 0;
}
另外,團IDC網上有許多產品團購,便宜有口碑
『伍』 急急急!!!c語言 加密和解密 (在線等)
/*
原碼:asdf1B2Z3er
密碼:ewhj1F2D3iv
解碼:asdf1B2Z3er
Press any key to continue
*/
#include<stdio.h>
char*Encrypt(chars[],chard[],intmove){
inti;
for(i=0;s[i];++i){
if(s[i]>='a'&&s[i]<='z')
d[i]=(s[i]-'a'+move)%26+'a';
elseif(s[i]>='A'&&s[i]<='Z')
d[i]=(s[i]-'A'+move)%26+'A';
elsed[i]=s[i];//其他字元原樣復制
}
d[i]='