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:”就可以进入相应磁盘.
六.快捷方式.根据上一种方法,我门可以为相应的磁盘或磁盘中的文件新建快捷方式,需要使用某个隐藏磁盘上的文件,点击快捷方式即可,这样就能打开相应的文件夹和磁盘了.
不过在你实行操作之前一定要保存好此文件,并且记熟操作步骤,不然的话操作以后找不回磁盘也是一个相当麻烦的问题的,请你一定要谨慎操作为好。