導航:首頁 > 文檔加密 > 加密軟體ch

加密軟體ch

發布時間:2022-06-07 19:02:54

Ⅰ 硬體加密和軟體加密哪個更安全,有什麼區別

首先如果是軟體加密那麼可以對加密軟體進行反匯編,通過查看它匯編代碼(工作量非常大)就可以知道它的加密演算法從而破解。但是如果是硬體加密,這種手段是不可行的。
然後就是軟體加密容易受到時序攻擊

時序攻擊(TIming attacks)
一些安全相關的操作使用輸入的值和密鑰,由半導體晶元執行不同的時間來比較。小心的時序測量和分析就能恢復出密鑰。這種攻擊成功破解了實際的RSA簽名的智能卡。
為了攻擊成功,需要收集裝置的信息,與處理時間整合比較,如問答延遲(quesTIon-answer delay)。很多密碼演算法容易受到時序攻擊,主要原因是軟體來執行演算法。時序攻擊可用在安全保護是基於密碼的微控制器,或使用確定數字的卡或密碼來進行訪問控制的系統,如達拉斯的iButton產品。
為防止此類攻擊可以使用盲簽名(Blinding signatures)技術。利用選定的隨機數與輸入數據混合來防止破解者知道輸入數據的數學運演算法則,設計者需要小心計算處理器的周期。當密碼進行比較時確保正確和錯誤的時間是一樣的,例如:飛思卡爾的68HC08微控制器的內部存儲器載入模塊在輸入正確的八位元組密碼後可以訪問內部快閃記憶體。為達到正確和錯誤的密碼都處理相同的時間,程序中增加了額外的空操作指令。這對時序攻擊提供了很好的保護
來自https://news.html5.qq.com/share/3344769423?ch=060000&tabId=0&tagId=MttTagSource&docId=3344769423&url=http%3A%2F%2Fkuaibao.qq.com%2Fs%2F20170822A01ONI00&clientWidth=360&dataSrc=89&qburl=qb%3A%2F%2Fext%2Fread%3Fcid%3DMttTagSource%26type%3D0%26mttsummaryid%3D3344769423%26b_f%3D060000%26bizid%3D1&sc_id=LAuiYdC

Ⅱ 給文件夾加密的永久免費軟體,謝謝。要操作簡單的。

宏傑工具之文件夾加密,網上都有,隨便,下載個就OK了,最好是下載最新版本,不過下載之後,要設置宏傑工具的密碼,這樣的話,別人打死都刪除不了和看不了裡面文件了。

宏傑工具之文件夾加密一款永久免費、非常優秀的、專業的文件和文件夾加密器。
永久免費、沒有任何使用限制的加密軟體。
絕不是簡單的隱藏文件夾!!!
經過該軟體加密的文件(夾)可以防止訪問、防止刪除、防止拷貝、內容只有您知道。
這款文件加密軟體具有界面漂亮友好、簡單易用、穩定無錯、功能強大和兼容性好等特點。
使用起來,只要點擊需要加密對象的右鍵即可輕松實現。解密只要雙擊已加密對象輸入密碼即可輕松搞定。一切為真正實用、方便著想。
不屬系統盤的資料,即使重裝、Ghost還原、系統盤格式化,也依然可以照樣使用。
使用的加密方式安全性極高,達到了文件夾加密安全性的頂峰!使用任何工具都無法解開!
值得一提的是它的加密速度極快,上百 G 的數據僅需1秒鍾完成。 沒有大小限制。
使用了高強度的加密演算法,給文件夾加密碼,讓您的文件夾更安全。不僅可以將您的文件夾徹底隱藏起來,更可以鎖定您的軟盤、硬碟等所有驅動器!方便,安全!另外它與系統結合的天衣無縫,在電腦中任何一個文件夾上右鍵即可加密。
強大的防刪除功能:讓破壞者無從下手。
本軟體為綠色軟體,安裝卸載100% 無殘留
唉!這個問題我都回了N遍了。度娘救救我啊!

Ⅲ 如何加密和解密文件(c語言),,舉幾個簡單的例子即可。。。。。。

讀取文件

ch=fgetc(fp);
while(ch!=EOF)
{
ch++; //移位加密,解密就是減一
ch=fgetc(fp);
}

Ⅳ 有什麼把文件加密的軟體嗎

高強度文件加密大師,網路找,很好用的,添加右鍵快捷方式,可以加密文件和文件夾 http://search.newhua.com/search.asp?keyword=%B8%DF%C7%BF%B6%C8%CE%C4%BC%FE&Submit=%CB%D1%CB%F7

Ⅳ 怎麼把自己電腦上C盤的文件加密

硬碟加密的幾種方法
一、修改硬碟分區表信息 硬碟分區表信息對硬碟的啟動至關重要,如果找不到有效的分區表,將不能從硬碟啟動或即使從軟盤啟動也找不到硬碟。通常,第一個分區表項的第0子節為80h,表示c盤為活動dos分區,硬碟能否自舉就依*它。若將該位元組改為00h,則不能從硬碟啟動,但從軟盤啟動後,硬碟仍然可以訪問。分區表的第4位元組是分區類型標志,第一分區的此處通常為06h,表示c盤為活動dos分區,若對第一分區的此處進行修改可對硬碟起到一定加密作用。
具體表現在:
1.若將該位元組改為0,則表示該分區未使用,當然不能再從c盤啟動了。從軟盤啟動後,原來的c盤不見了,你看到的c盤是原來的d盤,d盤是原來的e盤,依此類推。
2.若將此處位元組改為05h,則不但不能從硬碟啟動,即使從軟盤啟動,硬碟的每個邏輯盤都不可訪問,這樣等於整個硬碟被加密了。另外,硬碟主引導記錄的有效標志是該扇區的最後兩位元組為55aah。若將這兩位元組變為0,也可以實現對整個硬碟加鎖而不能被訪問。硬碟分區表在物理0柱面0磁頭1扇區,可以用norton for win95中的diskedit直接將該扇區調出並修改後存檔。或者在debug下用int 13h的02h子功能將0柱面0磁頭1扇區讀到內存,在相應位置進行修改,再用int 13h的03h子功能寫入0柱面0磁頭1扇區就可以了。
上面的加密處理,對一般用戶來講已足夠了。但對有經驗的用戶,即使硬碟不可訪問,也可以用int 13h的02h子功能將0柱面0磁頭1扇區讀出,根據經驗將相應位置數據進行修改,可以實現對硬碟解鎖,因為這些位置的數據通常是固定的或有限的幾種情形。另外一種保險但顯得笨拙的方法是將硬碟的分區表項備份起來,然後將其全部變為0,這樣別人由於不知道分區信息,就無法對硬碟解鎖和訪問硬碟了。
二、對硬碟啟動加口令
我們知道,在cmos中可以設置系統口令,使非法用戶無法啟動計算機,當然也就無法使用硬碟了。但這並未真正鎖住硬碟,因為只要將硬碟掛在別的計算機上,硬碟上的數據和軟體仍可使用。要對硬碟啟動加口令,可以首先將硬碟0柱面0磁頭1扇區的主引導記錄和分區信息都儲存在硬碟並不使用的隱含扇區,比如0柱面0磁頭3扇區。然後用debug重寫一個不超過512位元組的程序(實際上100多位元組足矣)裝載到硬碟0柱面0磁頭1扇區。該程序的功能是執行它時首先需要輸入口令,若口令不對則進入死循環;若口令正確則讀取硬碟上存有主引導記錄和分區信息的隱含扇區(0柱面0磁頭3扇區),並轉去執行主引導記錄。
由於硬碟啟動時首先是bios調用自舉程序int 19h將主硬碟的0柱面0磁頭1扇區的主引導記錄讀入內存0000:7c00h處執行,而我們已經偷梁換柱,將0柱面0磁頭1扇區變為我們自己設計的程序。這樣從硬碟啟動時,首先執行的不是主引導程序,而是我們設計的程序。在執行我們設計的程序時,口令若不對則無法繼續執行,也就無法啟動了。即使從軟盤啟動,由於0柱面0磁頭1扇區不再有分區信息,硬碟也不能被訪問了。當然還可以將我們設計的程序像病毒一樣,將其中一部分駐留在高端內存,監視int 13h的使用,防止0柱面0磁頭1扇區被改寫。$page_devide$
三、對硬碟實現用戶加密管理
unix操作系統可以實現多用戶管理,在dos系統下,將硬碟管理系統進行改進,也可實現類似功能的多用戶管理。該管理系統可以滿足這樣一些要求: 1.將硬碟分為公用分區c和若干專用分區d。其中「超級用戶」來管理c區,可以對c區進行讀寫和更新系統;「特別用戶」(如機房內部人員)通過口令使用自己的分區,以保護自己的文件和數據;「一般用戶」(如到機房上機的普通人員)任意使用劃定的公用分區。後兩種用戶都不能對c盤進行寫操作,這樣如果把操作系統和大量應用軟體裝在c盤,就能防止在公共機房中其他人有意或無意地對系統和軟體的破壞,保證了系統的安全性和穩定性。 2.在系統啟動時,需要使用軟盤鑰匙盤才能啟動系統,否則硬碟被鎖住,不能被使用。 此方法的實現可通過利用硬碟分區表中各邏輯盤的分區鏈表結構,採用匯編編程來實現。
四、對某個邏輯盤實現防寫
我們知道,軟盤上有防寫缺口,在對軟盤進行寫操作前,bios要檢查軟盤狀態,如果防寫缺口被封住,則不能進行寫操作。而防寫功能對硬碟而言,在硬體上無法進行,但可通過軟體來實現。 在dos系統下,磁碟的寫操作包括幾種情況:①在command.com支持下的寫操作,如md、rd、等;②在dos功能調用中的一些子功能如功能號為10h、13h、3eh、5bh等可以對硬碟進行寫操作;③通過int 26h將邏輯扇區轉換為絕對扇區進行寫;④通過int 13h的子功能號03h、05h等對磁碟進行寫操作。 但每一種寫操作最後都要調用int 13h的子功能去實現。
因此,如果對int 13h進行攔截,可以實現禁止對硬碟特定邏輯盤的寫操作。由於磁碟上文件的寫操作是通過int 13h的03h子功能進行寫,調用此子功能時,寄存器cl表示起始扇區號(實際上只用到低6位);ch表示磁軌號,在硬碟即為柱面號,該柱面號用10位表示,其最高兩位放在cl的最高兩位。對硬碟進行分區時可以將硬碟分為多個邏輯驅動器,而每個邏輯驅動器都是從某一個完整的柱面開始。如筆者的硬碟為2.5gb,分為c、d、e、f、g五個盤。其中c盤起始柱面號為00h,d盤起始柱面號為66h,e盤起始柱面號為e5h,f盤起始柱面號為164h,g盤起始柱面號為26bh。如果對int 13h進行攔截,當ah=03h,並且由cl高兩位和ch共同表示的柱面號大於e4h並小於164h,就什麼也不做就返回,這樣就可以實現對e盤禁止寫。

Ⅵ 文件加密解密

開篇 人生命、要守護,十條法則要記住,一旦災害發生時,及時應用心有數。 一、地震 遇地震,先躲避,桌子床下找空隙,靠在牆角曲身體,抓住機會逃出去,

Ⅶ 有沒有什麼加密軟體,可以加密一個分區或是文件夾

那就用系統自帶的就是右擊你要加密的盤啟用bitlocker不過那個分區以後都會要M碼才能打開了M碼千萬不能忘記否則要從裝系統的我就是WIN7旗艦版的有啊!!XP也有

Ⅷ 用C++寫一道完整的加密程序 跪求 加密解密小軟體

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*
文件操作 API
*/
#define GET_WRITE_FILE_NAME(O) \
{ \
char ftype[10] = {0}; \
char *tmp = 0; \
char *position = 0; \
tmp = (O); \
while(1) \
{ \
position = tmp; \
tmp = strchr(tmp, '.'); \
if(tmp != NULL) \
tmp++; \
else if(position > (O)) \
{ \
strcpy(ftype, position); \
position = position - 1; \
break; \
} \
else \
break; \
} \
if(position != NULL) \
{ \
*position = '\0'; \
strcat((O), "_bak."); \
strcat((O), ftype); \
} \
}

int remove_file(char *fname)
{
if(0 != remove(fname))
return -1;
else
return 0;
}

int rename_file(char *oldname, char *newname)
{
if(0 != rename(oldname, newname))
return -1;

return 0;
}

FILE* open_file_read(char* fname)
{
FILE * f;

f = fopen(fname, "rb");

if(!f)
return NULL;
else
return f;
}

void close_file_read(FILE *f)
{
if(f)
fclose(f);
}

FILE* open_file_write(char* fname)
{
FILE * f;

f = fopen(fname, "wb");

if(!f)
return NULL;
else
return f;
}

void close_file_write(FILE *f)
{
if(f)
fclose(f);
}

int read_byte(FILE *f, char *ch)
{

if(f)
if(fread(ch, 1, 1, f) < 1)
return -1;

return 0;
}

int write_byte(FILE *f, char *ch)
{

if(f)
if(fwrite(ch, 1, 1, f) < 1)
return -1;

return 0;
}

/*
加密解密 API
*/
void decry_encry_byte(char *src, char *dest, char key)
{
if(!src || !dest)
return;

*dest = (*src) ^ key;
}

/*
主函數
*/
void main()
{
char fname[100] = {0};
char fname_bak[100] = {0};
char *pchar;
int i = 0, succeed = -1;
char chr, chw;
char key;

FILE *fr = NULL, *fw = NULL;

pchar = fname;

printf("input in filename you wanna encrypt:\n");
for(;;)
{
if(i == 100)
{
printf("Too complicated file path!!\n");
return;
}
scanf("%c", pchar);
if(*pchar == '\n')
{
*pchar = 0;
break;
}
else
pchar++;

i++;
}

strcpy(fname_bak, fname);

printf("input in encrypt key\n==>: ");
key = getchar();

fr = open_file_read(fname);
if(!fr)
{
printf("No such file!!\n");
goto exit;
}

GET_WRITE_FILE_NAME(fname);

fw = open_file_write(fname);
if(!fw)
{
printf("cant create the file %s!!\n", fname);
goto exit;
}

while(1)
{
if(0 == read_byte(fr, &chr))
{
decry_encry_byte(&chr, &chw, key);
if(0 != write_byte(fw, &chw))
break;
}
else
break;
}

succeed = 0;

exit:
if(fr)
close_file_read(fr);

if(fw)
close_file_write(fw);

if(succeed == 0)
{
remove_file(fname_bak);
rename_file(fname, fname_bak);
}
}

Ⅸ 怎樣用U盤快速加密軟體

有的軟體開發商有這樣一種需求,就是使用U盤發布軟體的同時,想要節約成本,防止U盤中的軟體被復制,但又不想再購買昂貴的加密狗,因此想要把軟體綁定在U盤上執行,當U盤拔下來的時候,軟體就不能正常運行,和先前介紹的綁定硬體指紋相似,使用綁定U盤的方式加密軟體。

在對軟體安全不是特別在意的情況下,可以在軟體中採用綁定U盤內部ID的方式來實現這種加密,先使用程序將U盤的ID讀出來,然後根據這個ID生成License文件,當解密者將U盤內的文件復制到其他電腦的時候,軟體執行過程中讀取U盤ID失敗,因此就無法校驗License。

通常情況下兩個U盤的ID是不相同的,因此即使將軟體復制到另外一個U盤,軟體執行的時候,根據U盤ID驗證License,也會出現不匹配的現象,這樣就實現了軟體綁定U盤的加密方式。

需要指出的是,這種U盤加密並不算安全,大多數U盤廠商有內部量產工具,可以修改U盤的內部ID號碼,這就存在了復制U盤的可能性,但對於普通用戶來說,通常沒有修改U盤內部ID的能力,因此也具有一定的加密性。

這個加密方法中,讀取U盤ID號的函數的VB源代碼如下所示:

Se t objW MISe rvice = Ge tObject("winmg mts:\.ro otcimv2")

Se t colIte ms = objWMISer vice.E xecQ uery("Select * Fro m Wi n32_US BHub")

F or Ea ch objIte m In colI tems

a = o bjItem.De viceID

If In Str(a, "VI D") The n b = Sp lit(a, "")

US B_ID = b(UBound(b))

Ne xt

Ⅹ 求 VC++編寫的文件夾加密軟體代碼 (其他工具也可以)~~·求 文件夾 加密的啊~~不是文件加密

// AesCodeDlg.cpp : implementation file
//

#include "stdafx.h"
#include "AesCode.h"
#include "AesCodeDlg.h"

#include "Aes.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
CAboutDlg();

// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum ;
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAesCodeDlg dialog

CAesCodeDlg::CAesCodeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAesCodeDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAesCodeDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CAesCodeDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAesCodeDlg)
DDX_Control(pDX, IDC_EnDeProg, m_prog);
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAesCodeDlg, CDialog)
//{{AFX_MSG_MAP(CAesCodeDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BAesEn, OnBAesEn)
ON_BN_CLICKED(IDC_BAesDe, OnBAesDe)
ON_BN_CLICKED(IDC_BFile, OnBFile)
ON_BN_CLICKED(IDC_BFileEn, OnBFileEn)
ON_BN_CLICKED(IDC_BFileDe, OnBFileDe)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAesCodeDlg message handlers

BOOL CAesCodeDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here
SetDlgItemText(IDC_EAesEn,"0123456789abcdef");
EnDe_filename="";
m_prog.SetRange(0,100);
m_prog.SetPos(0);
return TRUE; // return TRUE unless you set the focus to a control
}

void CAesCodeDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CAesCodeDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CAesCodeDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
////////////////////////////////////////////////////////////////////////////////////////////////
//Aes字元串加密
void CAesCodeDlg::OnBAesEn()
{
// TODO: Add your control notification handler code here
unsigned char inBuff[25],ouBuff[25];
memset(inBuff,0,25);
memset(ouBuff,0,25);

Aes aes(24,(unsigned char*)"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf\x10\x11\x12\x13\x14\x15\x16\x17");

GetDlgItemText(IDC_EAesEn,(char*)inBuff,24);
if(strlen((char*)inBuff)>16)MessageBox("本例只能加密16位元組的字元串,大於截斷");

aes.Cipher(inBuff,ouBuff); //因為輸出為16個位元組,每個位元組用兩個字母或數字表示。
CString str="",strTmp; //實際輸出是32個字母或數字,否則ASCII碼值超出127的會變成亂碼。
for(int i=0;i<16;i++)
{
strTmp.Format("%02x",ouBuff[i]); //其實相當於把ouBuff的ASCII值這個數字以16進制的形式輸出
str+=strTmp;
}
//MessageBox(str,"加密後");
SetDlgItemText(IDC_EAesEn,str);
}
////////////////////////////////////////////////////////////////////////////////////////////////
//Aes字元串解密
void CAesCodeDlg::OnBAesDe()
{
// TODO: Add your control notification handler code here
unsigned char inBuff[33],ouBuff[25]; //還是要注意32個字元的字元串需要用33個位元組來存儲,
//因為有個結束符,太惡心了
memset(inBuff,0,32);
memset(ouBuff,0,25);

Aes aes(24,(unsigned char*)"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf\x10\x11\x12\x13\x14\x15\x16\x17");
GetDlgItemText(IDC_EAesEn,(char*)inBuff,33);
unsigned char temp[25];
for(int j=0;j<16;j++)
{
temp[j]=char2num(inBuff[2*j])*16+char2num(inBuff[2*j+1]);// 將字元字面表示的16進制ASCII碼值轉換成真正的ASCII碼值
}

aes.InvCipher(temp,ouBuff);//"dda97ca4......ec0d7191"

SetDlgItemText(IDC_EAesDe,CString(ouBuff));
}

////////////////////////////////////////////////////////////////////////////////////////////////
//字元ASCII碼值到字元字面值的轉換 如 '0'轉換成0, 'a'轉換成10
int CAesCodeDlg::char2num(char ch)
{
if(ch>='0'&&ch<='9')return ch-'0';
else if(ch>='a'&&ch<='f')return ch-'a'+10;
return -1;
}
////////////////////////////////////////////////////////////////////////////////////////////////
//文件選擇框
void CAesCodeDlg::OnBFile()
{
// TODO: Add your control notification handler code here
CFileDialog fdlg(1,NULL,NULL,OFN_HIDEREADONLY ,"All Files(*.*)|*.*||");
if(IDOK!=fdlg.DoModal())return;
EnDe_filename=fdlg.GetPathName();
SetDlgItemText(IDC_EFile,EnDe_filename);
}
////////////////////////////////////////////////////////////////////////////////////////////////
//Aes文件加密
void CAesCodeDlg::OnBFileEn()
{
// TODO: Add your control notification handler code here
if(EnDe_filename=="")return;
FILE* finput;
FILE* foutput;
finput=fopen((LPCTSTR)EnDe_filename,"rb");
if(!finput)
{
MessageBox("文件打開錯誤","出錯",MB_OK);
return;
}
fseek(finput,0,SEEK_END);
long lFileLen=ftell(finput); //ftell()函數返迴文件位置指示符的當前值,即如果現在是在文件結尾,則這個值就是文件長度
fseek(finput,0,SEEK_SET);
long blocknum=lFileLen/16;
long leftnum=lFileLen%16;
EnDe_filename+=".en";
foutput=fopen((LPCTSTR)EnDe_filename,"wb");
if(!foutput)
{
MessageBox("文件打開錯誤","出錯",MB_OK);
fclose(finput);
return;
}
unsigned char inBuff[25],ouBuff[25];
Aes aes(16,(unsigned char*)"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf");
for(long i=0;i<blocknum;i++)
{
fread(inBuff,1,16,finput); //讀取16個對象,每個對象的長度是1位元組
aes.Cipher(inBuff,ouBuff);
fwrite(ouBuff,1,16,foutput);
m_prog.SetPos(int(100*i/blocknum)); //加密進度條進度設置
}
if(leftnum)
{
memset(inBuff,0,16);
fread(inBuff,1,leftnum,finput);
aes.Cipher(inBuff,ouBuff);
fwrite(ouBuff,1,16,foutput);
}
fclose(finput);
fclose(foutput);
MessageBox("加密成功!");
SetDlgItemText(IDC_EFile,EnDe_filename);
m_prog.SetPos(0);
}
////////////////////////////////////////////////////////////////////////////////////////////////
//Aes文件解密
void CAesCodeDlg::OnBFileDe()
{
// TODO: Add your control notification handler code here
if(EnDe_filename=="")return;
FILE* finput;
FILE* foutput;
finput=fopen((LPCTSTR)EnDe_filename,"rb");
if(!finput)
{
MessageBox("文件打開錯誤","出錯",MB_OK);
return;
}
fseek(finput,0,SEEK_END);
long lFileLen=ftell(finput); //ftell()函數返迴文件位置指示符的當前值,即如果現在是在文件結尾,則這個值就是文件長度
fseek(finput,0,SEEK_SET);
long blocknum=lFileLen/16;
long leftnum=lFileLen%16;
EnDe_filename+=".de";
foutput=fopen((LPCTSTR)EnDe_filename,"wb");
if(!foutput)
{
MessageBox("文件打開錯誤","出錯",MB_OK);
fclose(finput);
return;
}
unsigned char inBuff[25],ouBuff[25];
Aes aes(16,(unsigned char*)"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf");
for(long i=0;i<blocknum;i++)
{
fread(inBuff,1,16,finput); //讀取16個對象,每個對象的長度是1位元組
aes.InvCipher(inBuff,ouBuff);
fwrite(ouBuff,1,16,foutput);
m_prog.SetPos(int(100*i/blocknum)); //加密進度條進度設置
}
if(leftnum)
{
MessageBox("文件可能已損壞或非經aes加密過");
}
fclose(finput);
fclose(foutput);
MessageBox("解密成功!");
SetDlgItemText(IDC_EFile,EnDe_filename);
m_prog.SetPos(0);
}
要源程序和全部代碼給我郵箱我給你發過去。

閱讀全文

與加密軟體ch相關的資料

熱點內容
高德地圖解壓後的文件 瀏覽:636
php加水印類 瀏覽:224
編譯原理定義表格和編寫查找函數 瀏覽:346
指數函數和對數函數的高精度快速演算法 瀏覽:207
c預編譯干什麼 瀏覽:24
hp網路共享文件夾 瀏覽:365
程序員如何不被廢 瀏覽:806
二進制流轉pdf 瀏覽:916
php判斷爬蟲 瀏覽:571
960除24除4簡便演算法 瀏覽:786
關於解壓英語翻譯 瀏覽:565
python控制鍵盤右鍵 瀏覽:921
php沒有libmysqldll 瀏覽:829
時政新聞app哪個好 瀏覽:906
手機已加密怎麼辦 瀏覽:201
安卓手機截屏怎麼傳到蘋果 瀏覽:529
京管家app哪裡下載 瀏覽:33
文件夾橫向排列的豎向排列 瀏覽:454
51單片機驅動攝像頭模塊 瀏覽:689
政府文件加密沒法轉換 瀏覽:374