aes加解密软件apk(aes加解密软件)

2023-02-14 4:21:26 密语知识 思思

有什么用AES加密算法的文件夹加密软件

这个我不清楚。

文件夹加密软件,我使用的是文件夹加密超级大师。

文件夹加密超级大师支持所有windows系统,可以加密文件夹,加密文件,保护磁盘和数据粉碎,使用起来非常方便。

在需要加密的文件和文件夹上单击鼠标右键选择加密就可以了。

解密时只要双击加密的文件夹和文件,输入正确的密码就可以解密。

文件夹加密超级大师加密后的文件和文件夹可以防止删除、复制和移动。

相对于其他的文件夹加密软件和文件加密软件,功能和性能还有操作都更加的出色。

并且有微软、360和金山的安全认证,是一款绝对安全的文件夹加密软件。

您可以到百度上下载文件夹加密超级大师来给您的文件和文件夹加密,看看使用效果怎么样?

aes加解密软件apk(aes加解密软件) 第1张

app请求数据解密(AES)二

这篇文章主要介绍burp解密http请求数据插件的编写。根据上篇文章分析得到的AES加解密算法,我们要编写一个AES解密插件,将指定host的请求数据解密,并在新建的消息编辑器中显示。

一、AES解密插件用到的接口

二、解密插件的实现与使用

抓取我们过滤的特定的请求包测试

可以看到对特定的每个请求数据解密后在消息编辑器中输出

综上所述,该篇文章主要介绍了burp中自定义消息编辑器解密插件的编写。其中,我们可以依据自己的个人需求来指定需要过滤的请求,比如可以按照请求数据中包含的参数名称、请求头中包含的host、user-agent、Content-Type、请求链接url等,多个条件一起判断也可以。有需要插件源码的童鞋,可以在公众号回复" AES Decrypt2 "。

求AES加解/密码密软件程序!!!

有界面,我这里有个,但是是c#语言的,你以为如何?

下面是c版本的

AES加密算法源代码

//AES.h

#define decrypt TRUE

#define encrypt FALSE

#define TYPE BOOL

typedef struct _AES{

int Nb;

int Nr;

int Nk;

unsigned long *Word;

unsigned long *State;

}AES;

/*

加密数据

byte *input 明文

byte *inSize 明文长

byte *out 密文存放的地方

byte *key 密钥key

byte *keySize 密钥长

*/

void Cipher(

unsigned char* input,

int inSize,

unsigned char* out,

unsigned char* key,

int keySize);

/*

解密数据

byte *input 密文

int *inSize 密文长

byte *out 明文存放的地方

byte *key 密钥key

int *keySize 密钥长

*/

void InvCipher(

unsigned char* input,

int inSize,

unsigned char* out,

unsigned char* key,

int keySize);

/*

生成加密用的参数AES结构

int inSize 块大小

byte* 密钥

int 密钥长

unsigned long 属性(标实类型)

返回AES结构指针

*/

AES *InitAES(AES *aes,

int inSize,

unsigned char* key,

int keySize, TYPE type);

/*

生成加密用的参数AES结构

int inSize 块大小

byte* 密钥

int 密钥长

返回AES结构指针

*/

AES *InitAES(

int inSize,

unsigned char* key,

int keySize, BOOL );

/*

加密时进行Nr轮运算

AES * aes 运行时参数

*/

void CipherLoop(

AES *aes);

/*

解密时进行Nr轮逆运算

AES * aes 运行时参数

*/

void InvCipherLoop(

AES *aes);

/*

释放AES结构和State和密钥库word

*/

void freeAES(

AES *aes);

//AES.cpp

#include "stdafx.h"

#include

#include

#include "AES.h"

unsigned char* SubWord(unsigned char* word);

unsigned long* keyExpansion(unsigned char* key, int Nk, int Nr,int);

/*

加密数据

byte *input 明文

byte *inSize 明文长

byte *out 密文存放的地方

byte *key 密钥key

byte *keySize 密钥长

*/

void Cipher(unsigned char* input, int inSize, unsigned char* out, unsigned char* key, int keySize)

{

AES aes ;

InitAES(aes,inSize,key,keySize,encrypt);

memcpy(aes.State,input,inSize);

CipherLoop(aes);

memcpy(out,aes.State,inSize);

}

/*

解密数据

byte *input 密文

int *inSize 密文长

byte *out 明文存放的地方

byte *key 密钥key

int *keySize 密钥长

*/

void InvCipher(unsigned char* input, int inSize, unsigned char* out, unsigned char* key, int keySize)

{

AES aes;

InitAES(aes,inSize,key,keySize,decrypt);

memcpy(aes.State,input,inSize);

InvCipherLoop(aes);

memcpy(aes.State,out,inSize);

}

/*

生成加密用的参数AES结构

int inSize 块大小

byte* 密钥

int 密钥长

返回AES结构指针

*/

AES *InitAES(AES *aes,int inSize, unsigned char *key, int keySize, TYPE type)

{

int Nb = inSize 2,

Nk = keySize 2,

Nr = Nb Nk ? Nk:Nb+6;

aes-Nb = Nb;

aes-Nk = Nk;

aes-Nr = Nr;

aes-Word = keyExpansion(key,Nb,Nr,Nk);

aes-State = new unsigned long[Nb+3];

if(type)

aes-State += 3;

return aes;

}

/*

生成加密用的参数AES结构

int inSize 块大小

byte* 密钥

int 密钥长

返回AES结构指针

*/

AES *InitAES(int inSize, unsigned char* key, int keySize,unsigned long type)

{

return InitAES(new AES(),inSize,key,keySize,type);

}

/*

*/

void CipherLoop(AES *aes)

{

unsigned char temp[4];

unsigned long *word8 = aes-Word,

*State = aes-State;

int Nb = aes-Nb,

Nr = aes-Nr;

int r;

for (r = 0; r Nb; ++r)

{

State[r] ^= word8[r];

}

for (int round =1; round {

word8 += Nb;

/*

假设Nb=4;

---------------------

| s0 | s1 | s2 | s3 |

---------------------

| s4 | s5 | s6 | s7 |

---------------------

| s8 | s9 | sa | sb |

---------------------

| sc | sd | se | sf |

---------------------

| | | | |

---------------------

| | | | |

---------------------

| | | | |

---------------------

*/

memcpy(State+Nb,State,12);

/*

Nb=4;

---------------------

| s0 | | | |

---------------------

| s4 | s5 | | |

---------------------

| s8 | s9 | sa | |

---------------------

| sc | sd | se | sf |

---------------------

| | s1 | s2 | s3 |

---------------------

| | | s6 | s7 |

---------------------

| | | | sb |

---------------------

*/

for(r =0; r {

/*

temp = {Sbox[s0],Sbox[s5],Sbox[sa],Sbox[sf]};

*/

temp[0] = Sbox[*((unsigned char*)State)];

temp[1] = Sbox[*((unsigned char*)(State+1)+1)];

temp[2] = Sbox[*((unsigned char*)(State+2)+2)];

temp[3] = Sbox[*((unsigned char*)(State+3)+3)];

*((unsigned char*)State) = Log_02[temp[0]] ^ Log_03[temp[1]] ^ temp[2] ^ temp[3];

*((unsigned char*)State+1) = Log_02[temp[1]] ^ Log_03[temp[2]] ^ temp[3] ^ temp[0];

*((unsigned char*)State+2) = Log_02[temp[2]] ^ Log_03[temp[3]] ^ temp[0] ^ temp[1];

*((unsigned char*)State+3) = Log_02[temp[3]] ^ Log_03[temp[0]] ^ temp[1] ^ temp[2];

*State ^= word8[r];

State++;

}

State -= Nb;

}

memcpy(State+Nb,State,12);

word8 += Nb;

for(r =0; r {

*((unsigned char*)State) = Sbox[*(unsigned char*)State];

*((unsigned char*)State+1) = Sbox[*((unsigned char*)(State+1)+1)];

*((unsigned char*)State+2) = Sbox[*((unsigned char*)(State+2)+2)];

*((unsigned char*)State+3) = Sbox[*((unsigned char*)(State+3)+3)];

*State ^= word8[r];

State++;

}

}

/*

解密时进行Nr轮逆运算

AES * aes 运行时参数

*/

void InvCipherLoop(AES *aes)

{

unsigned long *Word = aes-Word,

*State = aes-State;

int Nb = aes-Nb,

Nr = aes-Nr;

unsigned char temp[4];

int r =0;

Word += Nb*Nr;

for (r = 0; r Nb; ++r)

{

State[r] ^= Word[r];

}

State -= 3;

for (int round = Nr-1; round 0; --round)

{

/*

假设Nb=4;

---------------------

| | | | |

---------------------

| | | | |

---------------------

| | | | |

---------------------

| s0 | s1 | s2 | s3 |

---------------------

| s4 | s5 | s6 | s7 |

---------------------

| s8 | s9 | sa | sb |

---------------------

| sc | sd | se | sf |

---------------------

*/

memcpy(State,State+Nb,12);

/*

Nb=4;

---------------------

| | | | s7 |

---------------------

| | | sa | sb |

---------------------

| | sd | se | sf |

---------------------

| s0 | s1 | s2 | s3 |

---------------------

| s4 | s5 | s6 | |

---------------------

| s8 | s9 | | |

---------------------

| sc | | | |

---------------------

*/

Word -= Nb;

State += Nb+2;

for(r = Nb-1; r = 0; r--)

{

/*

temp = {iSbox[s0],iSbox[sd],iSbox[sa],iSbox[s7]};

*/

temp[0] = iSbox[*(byte*)State];

temp[1] = iSbox[*((byte*)(State-1)+1)];

temp[2] = iSbox[*((byte*)(State-2)+2)];

temp[3] = iSbox[*((byte*)(State-3)+3)];

*(unsigned long*)temp ^= Word[r];

*(unsigned char*)State = Log_0e[temp[0]] ^ Log_0b[temp[1]] ^ Log_0d[temp[2]] ^ Log_09[temp[3]];

*((unsigned char*)State+1) = Log_0e[temp[1]] ^ Log_0b[temp[2]] ^ Log_0d[temp[3]] ^ Log_09[temp[0]];

*((unsigned char*)State+2) = Log_0e[temp[2]] ^ Log_0b[temp[3]] ^ Log_0d[temp[0]] ^ Log_09[temp[1]];

*((unsigned char*)State+3) = Log_0e[temp[3]] ^ Log_0b[temp[0]] ^ Log_0d[temp[1]] ^ Log_09[temp[2]];

State --;

}

State -= 2;

}

Word -= Nb;

memcpy(State,State+Nb,12);

State += Nb+2;

for(r = Nb-1; r = 0; r--)

{

*(unsigned char*)State = iSbox[*(unsigned char*)State];

*((unsigned char*)State+1) = iSbox[*((unsigned char*)(State-1)+1)];

*((unsigned char*)State+2) = iSbox[*((unsigned char*)(State-2)+2)];

*((unsigned char*)State+3) = iSbox[*((unsigned char*)(State-3)+3)];

*State ^= Word[r];

State --;

}

}

/*

*--------------------------------------------

*|k0|k1|k2|k3|k4|k5|k6|k7|k8|k9|.......|Nk*4|

*--------------------------------------------

*Nr轮密钥库

*每个密钥列长度为Nb

*---------------------

*| k0 | k1 | k2 | k3 |

*---------------------

*| k4 | k5 | k6 | k7 |

*---------------------

*| k8 | k9 | ka | kb |

*---------------------

*| kc | kd | ke | kf |

*---------------------

*/

unsigned long* keyExpansion(byte* key, int Nb, int Nr, int Nk)

{

unsigned long *w =new unsigned long[Nb * (Nr+1)]; // 4 columns of bytes corresponds to a word

memcpy(w,key,Nk2);

unsigned long temp;

for (int c = Nk; c Nb * (Nr+1); ++c)

{

//把上一轮的最后一行放入temp

temp = w[c-1];

//判断是不是每一轮密钥的第一行

if (c % Nk == 0)

{

//左旋8位

temp = (temp8)|(temp24);

//查Sbox表

SubWord((byte*)temp);

temp ^= Rcon[c/Nk];

}

else if ( Nk 6 (c % Nk == 4) )

{

SubWord((byte*)temp);

}

//w[c-Nk] 为上一轮密钥的第一行

w[c] = w[c-Nk] ^ temp;

}

return w;

}

unsigned char* SubWord(unsigned char* word)

{

word[0] = Sbox[ word[0] ];

word[1] = Sbox[ word[1] ];

word[2] = Sbox[ word[2] ];

word[3] = Sbox[ word[3] ];

return word;

}

/*

释放AES结构和State和密钥库word

*/

void freeAES(AES *aes)

{

// for(int i=0;iNb;i++)

// {

// printf("%d\n",i);

// free(aes-State[i]);

// free(aes-Word[i]);

// }

// printf("sdffd");

}