des解密工具下载(des解密原理及流程)

2023-02-28 2:20:57 摩斯密码知识 思思

DES是什么格式的文件?

前段时间下载了一个文件夹加密狗3.3绿色破解版,隐藏一些重要文件,结果突然有一天去查找文件,软件过了试用期了,必须得注册。本人越想越生气,妈的,分明是作者在各论坛发布免费、破解版什么的来蒙骗大家。决定誓死不注册,在网上找了几种解决这种情况的方法,分享给大家。 朋友们,千万不要相信各大论坛、下载网站上的关于文件加密(看门)狗的免费、破解版什么的啊,全是作者骗人的啊!!! 第一种方法:用FinalData,FinalData大家都听说过吧?FinalData是一个大名鼎鼎的数据恢复软件,可以恢复磁盘上被删除的各种文件,甚至当磁盘被格式化了以后,只要数据没有被破坏,也一样可以将数据找回。之所以用它来破解加密软件,是由于加密软件并非真的对文件数据进行了加密更改,软件只是对磁盘和文件分配表作了一些小小的修改,使得文件无法被查看到。FinalData可以直接对磁盘进行操作,从而避开了加密软件在系统中造成的假象,顺利的恢复被加密隐藏的文件运行FinalData后,打开加密文件所在的驱动器分区。FinalData会扫描磁盘文件分配表。提示:由于我们并不需要恢复被删除的文件,因此可以点击取消簇扫描。返回程序主界面,可以看到在中间的列表窗口中已经显示出分区中的所有目录文件夹。双击展开“根目录”,找到被加密的文件夹如“e:\111”,依次展开文件夹列表上的+号,在“e:\111\DirRecycler\SYSTEM.\dogtmpdir\ ”中是不是加密的文件?选择要解密的文件,点击右键选择“恢复”命令,弹出文件保存对话框,指定将文件保存到另外一个分区后原来加密过的文件就现形了。是不是很简单?

第二种方法:有的朋友可能会说,我的电脑里没有FinalData怎么办?也有办法,你不会告诉我你的电脑里连winrar也没装吧?如果装了的话,那也很简单,用winrar就可以打开,比如你加密的的文件夹是"e:\111",实际存放地址就是“e:\111\DirRecycler\SYSTEM~1\dogtmpdir\”,把路径填到winrar的地址栏敲一下回车就可以打开了,看那些所谓加密的文件是不是乖乖的躺在那里?然后你要删要复制就随便吧。

第三种方法:用“文件夹嗅探器”,这款软件可以说是这类加密软件的克星,它可以迅速的查找出电脑中被加密隐藏的机密文件,并进行破解恢复。运行软件后,点击工具栏上的“扫描”按钮,弹出驱动器选择对话框,选择要扫描的磁盘分区,确定后即可开始扫描硬盘中所有隐藏文件了。无论是使用哪一款加密隐藏软件,都可以将这些软件加密过的文件嗅探查找出来。选择查找出来的文件后,点击工具栏上的“复制到文件夹”按钮,即可将文件破解并保存到其它路径了。而且这款软件并不是只对“文件夹看门狗”有效哦,几乎对所有的这类“加密软件”都手到擒来,你用了就知道!

提示:由于“文件夹嗅探器”破解加密软件的功能强大,有一些加密软件针对它进行了限制。需要在系统中结束加密软件的有关进程才能使用。在使用文件夹嗅探器来破解“文件夹看门狗”的时候,可能会出现“本次操作由于这台计算机的限制而被取消”对话框,很简单,只要把程序任意改个名就可以正常运行了. 另一种方法是: 1.破解密码

打开“命令提示符”窗口,输入命令“start x:\xxx\DirRecyler\system..\"”回车后会自动打开一个文件夹,里面的“dogtmpdir”文件夹就是加密文件!随便复制或移动就可以了。

(“x:\xxx\”表示加密文件夹的路径。例如:我的加密文件夹在D盘,文件夹名为“QQQ”。则输入命令“start D:\QQQ\Dirrecycler\system..\”注意最后那两个点)

2.删除“文件夹看门狗”加密文件

打开“命令提示符”窗口,输入命令“rd/s \\.\x:\xxx”回车后会要求确认,输入“Y”回车即可删除加密文件夹!

(“x:\xxx\”表示加密文件夹的路径。例如:我的加密文件夹在D盘,文件夹名为“QQQ”。则输入命令“rd/s \\.\D:\QQQ”回车,会要求确认,再输入“Y”回车即可。 还有一种方法,与上面的基本相同: 打开运行,输入cmd,回车假如你把c盘根目录下的123文件夹加密了在cmd窗口中输入一下命令: del c:\123\DirRecycler\desktop.ini 按回车 attrib c:\123\DirRecycler -h -s 按回车 md c:\123\DirRecycler\system...\ 按回车现在好了,你可以在system..(注意是后面有两个点的那个文件夹)文件夹。就可以看见被加密文件夹里面的文件了

des解密工具下载(des解密原理及流程) 第1张

DES加密算法C语言实现

/*********************************************************************/

/*-文件名:des.h */

/*- */

/*-功能: 实现DES加密算法的加密解密功能 */

/*********************************************************************/

typedef int INT32;

typedef char INT8;

typedef unsigned char ULONG8;

typedef unsigned short ULONG16;

typedef unsigned long ULONG32;

/*如果采用c++编译器的话采用如下宏定义

#define DllExport extern "C" __declspec(dllexport)

*/

#define DllExport __declspec(dllexport)

/*加密接口函数*/

DllExport INT32 DdesN(ULONG8 *data, ULONG8 **key, ULONG32 n_key,ULONG32 readlen);

DllExport INT32 desN(ULONG8 *data, ULONG8 **key, ULONG32 n_key,ULONG32 readlen);

DllExport INT32 des3(ULONG8 *data, ULONG8 *key,ULONG32 n ,ULONG32 readlen);

DllExport INT32 Ddes3(ULONG8 *data,ULONG8 *key,ULONG32 n ,ULONG32 readlen);

DllExport INT32 des(ULONG8 *data, ULONG8 *key,INT32 readlen);

DllExport INT32 Ddes(ULONG8 *data,ULONG8 *key,INT32 readlen);

*********************************************************************/

/*-文件名:des.c */

/*- */

/*-功能: 实现DES加密算法的加密解密功能 */

//*********************************************************************/

#include stdlib.h

#include stdio.h

#include string.h

#include memory.h

#include malloc.h

#include "des.h"

#define SUCCESS 0

#define FAIL -1

#define READFILESIZE 512

#define WZ_COMMEND_NUM 4

#define WZUSEHELPNUM 19

#define DESONE 1

#define DESTHREE 2

#define DESMULTI 3

INT8 *WZ_Commend_Help[] =

{

"基于DES的加密解密工具v1.0 ",/*0*/

"追求卓越,勇于创新 ",

"----著者 : 吴真--- ",

" "

};

INT8 *WZ_USE_HELP[]={

"输入5+n个参数:",

"\t1.可执行文件名 *.exe",

"\t2.操作类型 1:一层加密;2:一层解密;",

"\t\t13:N层单密钥加密;23:N层单密钥解密;",

"\t\t39:N层多密钥加密;49:N层多密钥解密",

"\t3.读出数据的文件名*.txt",

"\t4.写入数据的文件名*.txt",

"\t5.密钥(8字节例如:wuzhen12)",

"\t[6].N层单密钥的层数或者...二层加密|解密密钥",

"\t[7].三层加密|解密密钥",

"\t[8]. ...",

"\t[N].N层加密|解密密钥",

"\t 例1: des 1 1.txt 2.txt 12345678",

"\t : des 2 2.txt 3.txt 12345678",

"\t 例2: des 13 1.txt 2.txt tiantian 5",

"\t : des 23 2.txt 3.txt tiantian 5",

"\t 例3: des 39 1.txt 2.txt 12345678 tiantian gaoxinma",

"\t : des 49 2.txt 3.txt 12345678 tiantian gaoxinma",

"******************************"

};

INT32 hextofile( ULONG8 *buf ,FILE *writefile, ULONG32 length);/*以16进制写入文件*/

INT32 encodehex(ULONG8 *tobuf,ULONG8 *frombuf,ULONG32 len);/*16进制解码*/

INT32 file_enc(FILE *readfile,FILE *writefile,

ULONG8 *key,ULONG32 keynum,

ULONG8 **superkey,ULONG32 n_superkey,

ULONG8 flag);

INT32 file_dec(FILE *readfile,FILE *writefile,

ULONG8 *key,ULONG32 keynum,

ULONG8 **superkey,ULONG32 n_superkey,

ULONG8 flag);

void wz_print_help();

INT32 main(INT32 argc,INT8 *argv[])

{

INT8 *FILENAME1,*FILENAME2;

FILE *fp, *fp2;

ULONG8 *key ;

ULONG8 **superkey ;/*n层加密解密密钥*/

ULONG8 n_superkey ;

ULONG32 num;

if ( argc = 5 (atoi(argv[1]) == 39 || atoi(argv[1]) == 49 ) )

{

n_superkey = argc - 4 ;

superkey = ( INT8 **)calloc(1, n_superkey*sizeof( void *) ) ;

for ( num = 0 ; num n_superkey ; num++)

{

superkey[num] = argv[4+num] ;

}

}

else if ( argc == 6 (atoi(argv[1]) == 13 || atoi(argv[1]) == 23 ) (atoi(argv[5])) 0)

{

}

else if ( argc == 5 ( atoi(argv[1]) == 1 || atoi(argv[1]) == 2 ))

{

}

else

{

wz_print_help();

return FAIL;

}

FILENAME1 = argv[2];

FILENAME2 = argv[3];

if ((fp= fopen(FILENAME1,"rb")) == NULL || (fp2 = fopen(FILENAME2,"wb"))==NULL)

{

printf("Can't open file\n");

return FAIL;

}

key = argv[4] ;

switch( atoi(argv[1] ))

{

case 1: /*加密*/

file_enc(fp,fp2,key,0, NULL,0, DESONE);

printf("\n \tDES 一层加密完毕,密文存于%s文件\n",FILENAME2);

break;

case 2:

file_dec(fp,fp2,key,0, NULL, 0,DESONE);

printf("\n \tDES 一层解密完毕,密文存于%s文件\n",FILENAME2);

break;

case 13:

file_enc(fp,fp2,key,atoi(argv[5]),NULL,0,DESTHREE);

printf("\n \tDES %u层单密钥加密完毕,密文存于%s文件\n",atoi(argv[5]),FILENAME2);

break;

case 23:

file_dec(fp,fp2,key,atoi(argv[5]),NULL,0,DESTHREE);

printf("\n \tDES %u层单密钥解密完毕,密文存于%s文件\n",atoi(argv[5]),FILENAME2);

break;

case 39:

file_enc(fp,fp2,NULL,0,superkey,n_superkey,DESMULTI);

printf("\n \tDES 多密钥加密完毕,密文存于%s文件\n",FILENAME2);

free(superkey);

superkey = NULL;

break;

case 49:

file_dec(fp,fp2,NULL,0,superkey,n_superkey,DESMULTI);

printf("\n \tDES 多密钥加密完毕,密文存于%s文件\n",FILENAME2);

free(superkey);

superkey = NULL;

break;

default:

printf("请选择是加密|解密 plese choose encrypt|deencrypt\n");

break;

}

fclose(fp);

fclose(fp2);

return SUCCESS;

}

void wz_print_help()

{

INT32 i ;

printf("\t");

for ( i = 0 ; i 22 ; i++)

{

printf("%c ",5);

}

printf("\n");

for( i = 0 ; i WZ_COMMEND_NUM ; i++)

{

printf("\t%c\t%s %c\n",5,WZ_Commend_Help[i],5);

}

printf("\t");

for ( i = 0 ; i 22 ; i++)

{

printf("%c ",5);

}

printf("\n");

for( i = 0 ; i WZUSEHELPNUM ; i++)

{

printf("\t%s\n",WZ_USE_HELP[i]);

}

return ;

}

INT32 file_enc(FILE *readfile,FILE *writefile,

ULONG8 *key,ULONG32 keynum,

ULONG8 **superkey,ULONG32 n_superkey,

ULONG8 flag)

{

INT32 filelen = 0,readlen = 0,writelen = 0;

ULONG32 totalfilelen = 0 ;/*统计实际的文件的长度*/

ULONG8 readbuf[READFILESIZE] = { 0 };

filelen = fread( readbuf, sizeof( INT8 ), READFILESIZE, readfile );

while( filelen == READFILESIZE )

{

totalfilelen += READFILESIZE;

switch(flag)

{

case DESONE:

des( readbuf,key,READFILESIZE);

break;

case DESTHREE:

des3( readbuf, key ,keynum,READFILESIZE);

break;

case DESMULTI:

desN( readbuf, superkey ,n_superkey,READFILESIZE);

break;

}

hextofile( readbuf, writefile, READFILESIZE );/*以16进制形式写入文件*/

memset(readbuf,0,READFILESIZE);

filelen = fread( readbuf, sizeof( INT8 ), READFILESIZE, readfile );

}

/*这是从文件中读出的最后一批数据,长度可能会等于0,所以要先判断*/

if ( filelen 0 )

{

/*如果从文件中读出的长度不等于0,那么肯定有8个字节以上的空间

文件长度存在最后8个字节中*/

totalfilelen += filelen;

memcpy( readbuf[READFILESIZE-8], (ULONG8*)totalfilelen,4);

switch(flag)

{

case DESONE:

des( readbuf,key,READFILESIZE);

break;

case DESTHREE:

des3( readbuf, key ,keynum,READFILESIZE);

break;

case DESMULTI:

desN( readbuf, superkey ,n_superkey,READFILESIZE);

break;

}

hextofile( readbuf, writefile,READFILESIZE );/*以16进制形式写入文件*/

memset(readbuf,0 ,READFILESIZE);

}

else /*filelen == 0*/

{

memcpy( readbuf[0], (ULONG8*)totalfilelen,4);

switch(flag)

{

case DESONE:

des( readbuf,key,8);

break;

case DESTHREE:

des3( readbuf, key ,keynum,8);

break;

case DESMULTI:

desN( readbuf, superkey ,n_superkey,8);

break;

}

hextofile( readbuf, writefile, 8);/*以16进制形式写入文件*/

}

return SUCCESS;

}

INT32 file_dec(FILE *readfile,FILE *writefile,

ULONG8 *key,ULONG32 keynum,

ULONG8 **superkey,ULONG32 n_superkey,

ULONG8 flag)

{

INT32 filelen = 0,readlen = 0,writelen = 0;

ULONG32 totalfilelen = 0 ;/*统计实际的文件的长度*/

INT32 num = 0;

ULONG8 readbuf[READFILESIZE] = { 0 };

ULONG8 sendbuf[READFILESIZE*2] = { 0 };

fseek(readfile,-16,SEEK_END);/*最后16个字节的表示文件长度的空间*/

filelen = fread( sendbuf, sizeof( INT8 ), 16, readfile );

encodehex( readbuf,sendbuf,8);

switch(flag)

{

case DESONE:

Ddes( readbuf,key,8);

break;

case DESTHREE:

Ddes3( readbuf, key ,keynum,8);

break;

case DESMULTI:

DdesN( readbuf, superkey ,n_superkey,8);

break;

}

/*解密*/

memcpy((ULONG8*)totalfilelen, readbuf[0],4);/*得到文件总长*/

memset(readbuf,0 ,8);

memset(sendbuf,0 ,16);

num = totalfilelen/READFILESIZE;/*有几个READFILESIZE组*/

totalfilelen %= READFILESIZE;

fseek(readfile,0,SEEK_SET);/*跳到文件头*/

while(num--)

{

filelen = fread( sendbuf, sizeof( INT8 ), READFILESIZE*2, readfile );

encodehex( readbuf,sendbuf,READFILESIZE);

switch(flag)

{

case DESONE:

Ddes( readbuf,key,READFILESIZE);

break;

case DESTHREE:

Ddes3( readbuf, key ,keynum,READFILESIZE);

break;

case DESMULTI:

DdesN( readbuf, superkey ,n_superkey,READFILESIZE);

break;

}

writelen = fwrite(readbuf, sizeof( INT8 ), READFILESIZE, writefile);

memset(readbuf,0 ,READFILESIZE);

memset(sendbuf,0 ,READFILESIZE*2);

}

if ( totalfilelen 0 )/*最后一块有多余的元素*/

{

filelen = fread( sendbuf, sizeof( INT8 ), READFILESIZE*2, readfile );

encodehex( readbuf,sendbuf,READFILESIZE);

switch(flag)

{

case DESONE:

Ddes( readbuf,key,READFILESIZE);

break;

case DESTHREE:

Ddes3( readbuf, key ,keynum,READFILESIZE);

break;

case DESMULTI:

DdesN( readbuf, superkey ,n_superkey,READFILESIZE);

break;

}

writelen = fwrite(readbuf, sizeof( INT8 ), totalfilelen, writefile);

memset(readbuf,0 ,READFILESIZE);

memset(sendbuf,0 ,READFILESIZE*2);

}

return SUCCESS;

}

INT32 hextofile( ULONG8 *buf ,FILE *writefile, ULONG32 length)

{

ULONG32 writelen = 0 ;

/*以16进制形式写入文件*/

while( writelen length)

{

if(buf[writelen] == 0)

{

fprintf( writefile, "%x", 0 );

fprintf( writefile, "%x", 0 );

}

else if (buf[writelen] 0x10)

{

fprintf( writefile, "%x", 0 );

fprintf( writefile, "%x", buf[writelen] );

}

else

{

fprintf( writefile, "%x", buf[writelen] );

}

writelen++;

}

return SUCCESS;

}

INT32 encodehex(ULONG8 *tobuf,ULONG8 *frombuf,ULONG32 len)

{

ULONG8 *readfirst = frombuf ;

ULONG8 *readend = frombuf[1] ;

INT8 *s;

ULONG8 y[2] ;

ULONG32 i;

for ( i = 0 ; i len ; i++)

{

y[0] = *readfirst ;

y[1] = *readend ;

readfirst += 2 ;

readend += 2 ;

tobuf[i] = (ULONG8)strtol((INT8*)y, s, 16);

}

return SUCCESS;

}

iOS DES加密 解密

头文件

#import CommonCrypto/CommonCryptor.h

NSString *const kInitVector = @"ffGGtsdfzxCv5568";

NSString *const DESKey = @"gg356tt8g5h6j9jh";

+ (NSString *)encodeDesWithString:(NSString *)str{

    NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];

    size_t plainTextBufferSize = [data length];

    const void *vplainText = (const void *)[data bytes];

    CCCryptorStatus ccStatus;

    uint8_t *bufferPtr = NULL;

    size_t bufferPtrSize = 0;

    size_t movedBytes = 0;

    bufferPtrSize = (plainTextBufferSize + kCCBlockSizeDES) ~(kCCBlockSizeDES - 1);

    bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t));

    memset((void *)bufferPtr, 0x0, bufferPtrSize);

    const void *vkey = (const void *) [DESKey UTF8String];

    const void *vinitVec = (const void *) [kInitVector UTF8String];

    ccStatus = CCCrypt(kCCEncrypt,

                      kCCAlgorithmDES,

                      kCCOptionPKCS7Padding,

                      vkey,

                      kCCKeySizeDES,

                      vinitVec,

                      vplainText,

                      plainTextBufferSize,

                      (void *)bufferPtr,

                      bufferPtrSize,

                      movedBytes);

    NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];

    NSString *result = [myData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

    return result;

}

+ (NSString *)decodeDesWithString:(NSString *)str{

        NSData *encryptData = [[NSData alloc] initWithBase64EncodedString:str options:NSDataBase64DecodingIgnoreUnknownCharacters];

        size_t plainTextBufferSize = [encryptData length];

        const void *vplainText = [encryptData bytes];

        CCCryptorStatus ccStatus;

        uint8_t *bufferPtr = NULL;

        size_t bufferPtrSize = 0;

        size_t movedBytes = 0;

        bufferPtrSize = (plainTextBufferSize + kCCBlockSizeDES) ~(kCCBlockSizeDES - 1);

        bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t));

        memset((void *)bufferPtr, 0x0, bufferPtrSize);

        const void *vkey = (const void *) [DESKey UTF8String];

        const void *vinitVec = (const void *) [kInitVector UTF8String];

        ccStatus = CCCrypt(kCCDecrypt,

                          kCCAlgorithmDES,

                          kCCOptionPKCS7Padding,

                          vkey,

                          kCCKeySizeDES,

                          vinitVec,

                          vplainText,

                          plainTextBufferSize,

                          (void *)bufferPtr,

                          bufferPtrSize,

                          movedBytes);

        NSString *result = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)bufferPtr

                                                                        length:(NSUInteger)movedBytes] encoding:NSUTF8StringEncoding];

        return result;

}

公司 gs des 加密后的文件,解密的办法你有吗 跪求

公司里这个自动加密的那种软件,我了解一些,M 我 希望帮到你!!!