c加密軟體
你所使用的文件處理函數,均為fputc,fgetc,fscanf等字元處理函數
加密前,文本內容確實是字元串,但是加密後,就會存在非字元型數據,這時候fputc,fgetc,fscanf等函數就不能進行正常處理了。簡單的例子,\0,\13這些數據會被字元處理函數截斷
所以請使用fread,fwrite等函數,這樣就不會局限於字元串了
比如fscanf(rsc,"%d,",&sec[temp]);,你可以寫成fread((void *)&sec[temp],sizeof(int),1,rsc);
2. c 語言常用的加密演算法——MD5
在C語言中,常用的加密演算法主要包括AES、RSA、MD5、SHA-1及Base64編碼。
AES加密演算法是一種對稱加密演算法,廣泛應用於數據加密。通過OpenSSL庫在C語言中實現AES加密。
RSA加密演算法為非對稱加密演算法,使用兩把不同的密鑰進行加密與解密,是最成熟且常用的非對稱加密演算法。同樣使用OpenSSL庫在C語言中實現RSA加密。
MD5演算法作為加密散列函數,產生128位散列值,廣泛應用於C語言中。通過OpenSSL庫實現MD5加密。
SHA-1演算法全稱為Secure Hash Algorithm 1,用於數字簽名、驗證、消息摘要等,C語言中通過OpenSSL庫實現SHA-1加密。
Base64編碼雖非加密演算法,但用於隱藏信息,C語言中通過OpenSSL庫進行Base64編碼與解碼。
實現這些演算法時通常利用OpenSSL庫,因其提供了高效實現,避免了重復開發。
MD5演算法在C語言中的實現示例如下:
#include
#include md5.h>
int main() {
char *str = "Hello, world!";
unsigned char digest[MD5_DIGEST_LENGTH];
MD5((unsigned char*) str, strlen(str), digest);
printf("MD5 hash of \"%s\": ", str);
for (int i = 0; i < MD5_DIGEST_LENGTH; i++) {
printf("%02x", digest[i]);
}
printf(" ");
return 0;
}
通過OpenSSL庫中的MD5函數,傳入字元串與長度,將結果存儲在數組中,然後列印數組內容即為MD5散列值。
3. C語言 異或加密
太麻煩了,建議您可以下載文件夾加密超級大師試試。
文件夾加密超級大師支持所有windows系統,可以加密文件夾,加密文件,保護磁碟和數據粉碎,使用起來非常方便。
4. 如何用C語言來使用openssl rsa進行公鑰加密,已有公鑰和明文
1. 本程序使用2048位密鑰對,每次加密時,原始數據的最大長度為245位元組,加密後的密文長度為256位元組.(採用打PADDING 的加密方式)
2. 如果所加密數據長度大於245位元組,請分多次加密,後將密文按順序存儲;解密時,每次讀取256位元組,進行解密,將解密後的數據依次按順序存儲,即可還原原始數據.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
#include <openssl/err.h>
#define OPENSSLKEY "test.key"
#define PUBLICKEY "test_pub.key"
#define BUFFSIZE 1024
char *my_encrypt(char *str, char *path_key); //加密
char *my_decrypt(char *str, char *path_key); //解密
int main(void)
{
char *source = "i like dancing !!!";
char *ptf_en, *ptf_de;
printf("source is :%s\n", source);
//1.加密
ptf_en = my_encrypt(source, PUBLICKEY);
if (ptf_en == NULL){
return 0;
}else{
printf("ptf_en is :%s\n", ptf_en);
}
//2.解密
ptf_de = my_decrypt(ptf_en, OPENSSLKEY);
if (ptf_de == NULL){
return 0;
}else{
printf("ptf_de is :%s\n", ptf_de);
}
if(ptf_en) free(ptf_en);
if(ptf_de) free(ptf_de);
return 0;
}
//加密
char *my_encrypt(char *str, char *path_key)
{
char *p_en = NULL;
RSA *p_rsa = NULL;
FILE *file = NULL;
int lenth = 0; //flen為源文件長度, rsa_len為秘鑰長度
//1.打開秘鑰文件
if((file = fopen(path_key, "rb")) == NULL)
{
perror("fopen() error 111111111 ");
goto End;
}
//2.從公鑰中獲取 加密的秘鑰
if((p_rsa = PEM_read_RSA_PUBKEY(file, NULL,NULL,NULL )) == NULL)
{
ERR_print_errors_fp(stdout);
goto End;
}
lenth = strlen(str);
p_en = (char *)malloc(256);
if(!p_en)
{
perror("malloc() error 2222222222");
goto End;
}
memset(p_en, 0, 256);
//5.對內容進行加密
if(RSA_public_encrypt(lenth, (unsigned char*)str, (unsigned char*)p_en, p_rsa, RSA_PKCS1_PADDING) < 0)
{
perror("RSA_public_encrypt() error 2222222222");
goto End;
}
End:
//6.釋放秘鑰空間, 關閉文件
if(p_rsa) RSA_free(p_rsa);
if(file) fclose(file);
return p_en;
}
//解密
char *my_decrypt(char *str, char *path_key)
{
char *p_de = NULL;
RSA *p_rsa = NULL;
FILE *file = NULL;
//1.打開秘鑰文件
file = fopen(path_key, "rb");
if(!file)
{
perror("fopen() error 22222222222");
goto End;
}
//2.從私鑰中獲取 解密的秘鑰
if((p_rsa = PEM_read_RSAPrivateKey(file, NULL,NULL,NULL )) == NULL)
{
ERR_print_errors_fp(stdout);
goto End;
}
p_de = (char *)malloc(245);
if(!p_de)
{
perror("malloc() error ");
goto End;
}
memset(p_de, 0, 245);
//5.對內容進行加密
if(RSA_private_decrypt(256, (unsigned char*)str, (unsigned char*)p_de, p_rsa, RSA_PKCS1_PADDING) < 0)
{
perror("RSA_public_encrypt() error ");
goto End;
}
End:
//6.釋放秘鑰空間, 關閉文件
if(p_rsa) RSA_free(p_rsa);
if(file) fclose(file);
return p_de;
}
5. 電腦里的C,D,E盤可以進行加密嗎
網上有各種加密軟體 可以全盤加密的
我用的是 UDE(夏冰軟體) 這個也不錯 我老爹就看不聊我的隱私了
要的話+QQ308351135 給你傳 有注冊碼
《磁碟隱藏和恢復方法大全》
A、磁碟隱藏方法
一.注冊表法.
注冊表操作如下:運行REGEDIT。依次打開:HKEY_CURRENT_ USER\Software\Microsoft\Windows\CurrentVersion\Polices\Explorer\,在右邊空白處單擊右鍵,選新建二進制值,在出現的新值#1上右擊滑鼠,進行重命名,改名為NoDrives。雙擊該鍵值,輸入00 00 00 00(不帶空格,直接輸入,此為系統預設值,全部分區都顯示出來,無隱藏分區)。其中第一組「00」代表A-H盤,第二組「00」代表I-P盤,三、四組依此類推。將第一組「00」改為01可隱藏A盤,改為02可隱藏B盤,改為04可隱藏C盤,改為08可隱藏D盤,改為10隱藏E盤,改為20可隱藏F盤,改為40可隱藏G盤。如果隱藏的是E盤,將鍵值改為「10 00 00 00」即可。 。
二.工具法
磁碟隱藏助手 V1.00.超級魔法兔子等,360安全衛士,完美卸載等.
應用步驟簡單,按照菜單操作就可以了.
如利用Partition Magic隱藏硬碟驅動器
①運行PQMagic。
②選定一個磁碟分區。
③在菜單「Operations」中選「Advanced」下的「Hid Partition」菜單項,在出現的對話框中點擊OK。
④在主窗口下面的兩個按鈕中點擊「Apply」按鈕後重新啟動。驅動器隱藏即告完成。
這樣一來,其它人絕對不會想到會有這個分區,如果想到了,沒有這個軟體的話,也無法使用!
三.磁碟管理.
在「我的電腦」上右擊選擇「管理」,在彈出的「計算機管理」窗口中點擊「存儲」下的「磁碟管理」。在右邊窗口中就會出現本機硬碟的所有分區,右鍵單擊那個待隱藏的分區(比如D盤),從彈出的快捷菜單中選擇「更改驅動器名和路徑」,接著就會彈出「更改本地磁碟(D:)的驅動器號和路徑」窗口,選中窗口裡的「D:」再單擊「刪除」按鈕。此時會彈出「刪除的驅動器號可能會導致程序停止運行。確實要刪除這個驅動器名嗎?」的警告提示,點擊「是」。
最後回到資源管理器中再看一下,D盤真的沒了。而且再在地址欄中輸入「D:」,回車後,會彈出「無法訪問D:\ 此文件夾已被移動或刪除。」的警告信息,從而達到隱藏硬碟的目的。
四.隱藏「MS-DOS方式」下的磁碟驅動器
上訴方法雖然能隱藏磁碟,但在DOS下還可以訪問的,所以也要將其隱藏.
操作步驟如下:
①「開始」→「運行」中輸入regedit,打開注冊表編輯器。
②進入HKEY_CURRENT_USER\SoftWare\Microsoft\Windows\CurrentVersion
\Policies分枝中。
③在該分枝中新建一個主鍵「WinOldApp」,在該主鍵下新建一個DWord值的鍵值名「Disabled」,然後將其鍵值設為「1」。
這樣,不管是在「我的電腦」里,或「MS-DOS」方式下都看不見了.
五.隱藏「我的電腦」
①「開始」→「運行」中輸入regedit,打開注冊表編輯器。
②展開注冊表到HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}分枝中。
③在該分枝中新建一個主鍵「ShellFolder」,然後在右邊的窗口新建一個二進制值「attributes」,其鍵值改為「ff ff ff ff」,關閉注冊表。
重新啟動電腦,當桌面再次出現時,你會發現「我的電腦」不見了!要恢復顯示,刪掉「ShellFolder」主鍵即可!
B、找到隱藏磁碟的方法
一.修改注冊表.對應隱藏方法來改回來就可以了.
二.地址欄.
只要在地址欄和命令提示符下輸入隱藏的盤符如「D:」,仍然可以訪問該驅動器.
三.計算機管理.如果想再次訪問這個分區的內容,就按照上述做法找到「計算機管理」窗口,並在那個無任何標記的本地磁碟上再次右擊選擇「更改驅動器名和路徑」,在彈出的「更改本地磁碟的驅動器號和路徑」窗口中單擊「添加」按鈕,然後在「指派驅動器號」後選擇「D:」,點擊「確定」按鈕便可還原。
四.工具法.相應的隱藏工具能隱藏當然能訪問.這個不詳細說明.
五.屬性法.在桌面或者其他地方的快捷方式點右鍵,查看屬性,在查找目標輸入路徑如「D:」就可以進入相應磁碟.
六.快捷方式.根據上一種方法,我門可以為相應的磁碟或磁碟中的文件新建快捷方式,需要使用某個隱藏磁碟上的文件,點擊快捷方式即可,這樣就能打開相應的文件夾和磁碟了.
不過在你實行操作之前一定要保存好此文件,並且記熟操作步驟,不然的話操作以後找不回磁碟也是一個相當麻煩的問題的,請你一定要謹慎操作為好。