有界面,我这里有个,但是是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");
}
手机上目前还没有破解压缩文件(包括zip文件)的有效的工具。
建议将手机上的zip文件存到电脑上,然后下载一个快解密码读取工具(FastReader)来进行密码的破解。
关于FastReader的使用,请看:
打开快解密码读取工具,切换到“压缩包密码”页面
4、压缩包格式选择对应的格式,现在我破解的是“rar”格式的,所以选用“rar”,算法默认选择“AES”即可,不做处理即可,如果破解失败,则是算法不正确,由于不同压缩软件和压缩格式使用的算法不相同,我们依次换算法破解即可,破解算法肯定是3种算法中的一种。
5、将点击“打开文件”,打开需要破解密码的压缩包
6、点击“快速破解按钮”,会看到软件开始破解压缩包文件
7、大约2-3分钟后,提示密码破解成功,并显示出密码
8、如果我们需要破解其他格式的压缩包文件如ZIP,方法类似,按以上步骤操作即可,有时会遇到破解失败的情况,换一种算法即可,看下面例子:
9、打开软件,“压缩包格式”选择“ZIP”,算法使用“AES”,然后打开一个已经加密的压缩包文件“测试3.zip”(测试了几个软件加密的压缩包,只有这个不是AES算法的)
10、点击“快速破解”,开始破解,等待,看到一个失败的提示“破解失败,请换一种方法重试!!!”
11、这里,我们更换算法,重新点击“快速破解”,等待了2分钟,看到了破解成功的提示。
完成
破解压缩包密码的软件有ARCHPR。
ARCHPR是一款强大又专业的密码恢复工具,软件主要是用于解密RAR压缩包的密码,它能够帮助用户轻松的解锁各种带有密码的压缩包文件。解锁受密码保护的ZIP和RAR档案!完美底层优化有助于更快地完成工作。
能够保证在一小时之内恢复特定类型的压缩文件。恢复加密的ZIP和RAR压缩文件的密码具有已知明文攻击,底层优化可提供同类产品中的最佳性能支持最新RAR和ZIP格式的AES加密破解支持:ZIP/PKZip/WinZip,RAR/WinRAR,ARJ/WinARJ,ACE/WinACE(1.x),AES加密,自解压档案,可使用字典攻击和暴力攻击。
压缩包介绍
压缩包的基本原理是查找文件内的重复字节,并建立一个相同字节的“词典”文件,并用一个代码表示,比如在文件里有几处有一个相同的词“中华人民共和国”,用一个代码表示并写入“词典”文件,这样就可以达到缩小文件的目的。
接下去两篇文章我们主要介绍安全分析过程中burp抓包完解密 经过加密的请求数据 ,并在新建的消息编辑器中打印输出。这篇文章主要先介绍测试app中加解密算法的分析与还原。
一、分析请求数据的加密算法
结果如下所示
二、还原加密算法并测试
在下一篇文章中,将介绍app请求数据解密插件的编写。该篇文章分析中用到frida脚本与还原后的算法,如果有需要,可以在公众号回复" AES Decrypt1 "获取。
问题一:手机有什么软件可以给任何app加密 下载 软件管家
问题二:手机加密软件哪个好用 一般手机自带有程序锁。程序锁锁定就好了。如果手机本身没有。安全类软件都有。不必要另外安装软件来加密程序。。。
问题三:手机文件加密用什么软件 5分 你好 很乐意为你解答
首先要先看一下你手机是什么型的手机,有可能手机与手机的不同,所能安装的软件也不一样。我先推荐一种加密软件吧。手机文件加密软件Smart Crypto 1.50
以往的文件加密工具如短信加密工具、图片保险箱等软件都是只能给一种或几种格式的文件上锁。功能比较单一,而文件加密软件SmartCrypto可以给各种各样的文件上锁,大大的增强了你的手机的安全性。
SmartCrypto非常通俗易懂,而且文件也很小,不会占用太多的空间。使用起来得心应手,对于那些经常需要保密的朋友来说还是非常有用的。
打开软件之后,首先需要进行添加需要保密的文件。打开文件列表,出现的是类似seleq界面的手机内的各个驱动器,你可以在各个驱动器内寻找需要添加的文件。找到你想要添加的文件之后,点击“加入”,然后该文件就会出现在私人文件列表当中。然后加密,会提示你输入密码(只能用大小写英文字母作为密码)。输入完成之后,列表中的文件旁边会出现一个锁的标志,表示该文件已上锁。当将该文件上锁之后,也会从原来存放该文件的目录下面消失。
如果要对文件进行解密的话,选中该文件――解密就可以了,或者也可以通过选项――解密,然后输入密码,就可以打开文件,文件也会还原到原来的文件夹。需要注意的是,列表中仍然会存有该文件夹,你可以手动将它从列表中移除。
你也可以通过选项――自定义――文件加密,这样需要加密的文件就不会出现在列表中,需要解密的话可通过文件管理软件进入手机系统的该文件所在路径下进行解密。
另外,该软件还有一项功能,就是可以查看手机的存储情况,打开选项――查看内存及记忆体,然后会出现该手机的C盘,E盘的已使用存储和剩余存储。下载: down.gougou/...E373B1
希望对你有所帮助
问题四:手机加密软件好用的推荐一个? 你可以试试腾讯手机管家。感觉管家里那个私密空间功能很适合你。
这个功能用起来很方便。直接把你想加密的文件放入私密空间就可以了。平时手机上是不会显示的。只有在输入正确的密码时才能查看。
管家还有个隐私拍照功能。打开之后牌社的照片直接就回存入私密文件夹。省的不小心忘记了造成尴尬啊!
希望能帮助到你咯,记得采纳啊!
问题五:好用的手机sd卡加密软件有哪些 请问您加密后的sd卡是要在手机上还是在电脑上使用的呢、如果是在手机上使用可以试一下第三方misuo软件,是可以隐藏视频,音频,图片等文件的,还有文件分类的功能。加密后的文件 您可以在保险箱内轻松查看。
如果在电脑上使用,可以试一下U盘超级加密3000,软件是绿色免安装的软件,把软件放到U盘,可以随着U盘转移到其他电脑使用。加密速度快,安全性高。
问题六:有什么软件可以对手机记事本加密? 1下载几款流行的加密记事本,名字不列,防止侵权。
推荐使用misuo试试。
misuo是一款专业的手机加密软件,可对相册或存储卡内的照片、视频、音频、文档等多种文件类型进行加密,随时随地贴心保护手机隐私和私密文件。
2root手机,用adb系列工具抓出数据库文件
3用sqlitespy分析数据库
4结论:多款加密记事本仅仅是登陆的时候需要输入密码,记事本的内容是不加密的,只要用root工具就能看到所有内容。也有部分数据库加密了的记事本,如YY加密记事本采用AES对数据库加密,但这个软件功能较少。
提示:在选择加密记事本的时候需要仔细筛选,最好选用AES加密的记事本,AES目前无法破解。
问题七:大家觉得怎么样的手机加密软件才是最好用的呢 加密速度快、加密强度高、安全性
MISUO试一下,手机加密软件,可以加密手机图片、手机上的视频、文件音乐等
问题八:哪款加密软件可以用在手机和电脑上? 至佳私密禁卫军软件可以兼容电脑、平板电脑和手机上加解密的。就是说,手机加密的文件可以在电脑上解密,电脑上的加密件也可以在手机上解密。手机版本的还可以加密短信、通讯录、照片等,就是你手机丢了,或者别人把手机里的SD卡带走也无法看到加密的文件。很好的使的,建议你使用下。
问题九:苹果手机哪个加密软件最安全? 给手机的文件夹加密,用什么方法我不是非常的清楚。
在电脑上给文件夹加密,我可以给您推荐一个比较不错的方法。
用文件夹加密超级大师给文件夹加密也非常简单:
1 下载安俯文件夹加密超级大师。
2 在需要加密的文件夹上单击右键选择加密,然后在弹出的文件夹加密窗口中输入加密密码就OK。
问题十:大家觉得怎么样的手机加密软件才是最好用的呢? 可以试一下misuo软件,是可以隐藏视频,音频,图片等文件的,还有文件分类的功能。加密后的文件 您可以在保险箱内轻松查看。
这篇文章主要介绍burp解密http请求数据插件的编写。根据上篇文章分析得到的AES加解密算法,我们要编写一个AES解密插件,将指定host的请求数据解密,并在新建的消息编辑器中显示。
一、AES解密插件用到的接口
二、解密插件的实现与使用
抓取我们过滤的特定的请求包测试
可以看到对特定的每个请求数据解密后在消息编辑器中输出
综上所述,该篇文章主要介绍了burp中自定义消息编辑器解密插件的编写。其中,我们可以依据自己的个人需求来指定需要过滤的请求,比如可以按照请求数据中包含的参数名称、请求头中包含的host、user-agent、Content-Type、请求链接url等,多个条件一起判断也可以。有需要插件源码的童鞋,可以在公众号回复" AES Decrypt2 "。