时间戳转换
功能简介:Unix时间戳和北京时间互转、获取时间戳方法
地址:
代码对比/归并
功能简介:在线检测/比较两个文件文本的不同
地址:
LESS编译器
功能简介:将LESS代码编译成CSS代码,方便前端人员使用
地址:
crontab表达式
功能简介:根据crontab表达式计算未来N次的执行时间
地址:
代码格式化
功能简介:可以对SQL、XML、JSON代码进行格式化和美化
地址:
编码转换
功能简介:URL解码、Native转UTF-8、Native转ASCII
地址:
网页调色板
功能简介:网页颜色选择器、颜色代码查询、RGB颜色值参考
地址:
正则表达式
功能简介:正则表达式匹配和替换、多种常用正则表达式
地址:
答题
功能简介:学霸,快来做题,提升一下你的技能吧
地址:
Markdown
功能简介:将web上的文本转换成HTML文档
地址:
UBB编译器
功能简介:UBB是一种网页中的替代HTML代码的安全代码
地址:
进制转换
功能简介:2~36进制之间任意进制转换,支持浮点型
地址:
CSV转HTML
功能简介:将CSV数据转换为HTML的表格,并展示在页面上
地址:
HTML特殊符号
功能简介:HTML特殊字符编码大全
地址:
XML转JSON
功能简介:XML和JSON的内容和输出互相转换
地址:
HTML转JS
功能简介:HTML和JS的内容和输出互相转换
地址:
js/css压缩
功能简介:在线压缩Javascript和CSS代码
地址:
网页常用字体
功能简介:总结了各种常见的网页字体的显示效果
地址:
Cron生成器
功能简介:可以在线生成任务调度Quartz的Cron表达式
地址:
JSON格式化
功能简介:Json解析、验证、格式化、压缩、以及Json与XML相互转换
地址:
SQL格式化
功能简介:sql在线美化、格式化、脚本压缩
地址:
端口扫描
功能简介:扫描常用或指定的端口,查看端口是否开放
地址:
Base64编码解码
功能简介:将字符base64编码加密,或者将base64加密的字符还原
地址:
MD5加密
功能简介:生成32位和16位的大写和小写的密文
地址:
摩斯电码
功能简介:在线摩斯电码加密解密
地址:
IP查询
功能简介:查询IP或域名的地理位置和宽带供应商、查看本机IP
地址:
文字加密解密
功能简介:支持AES、DES、RC4、Rabbit 等多种算法
地址:
HTTP状态查询
功能简介:检测网页返回的HTTP状态码
地址:
生成htpasswd
功能简介:生成htpasswd
地址:
favicon图标制作
功能简介:将上传图像剪切并生成ico格式的图标
地址:
传图识字
功能简介:可以将一段含有英文文字的照片免费转化成文字
地址:
gif图制作
功能简介:一键生成gif动态图、闪图和搞笑表情包
地址:
生成二维码
功能简介:可以设置图像格式、容错率、大小、颜色及LOGO
地址:
图片转pdf
功能简介:在线免费将多张图片转成pdf文档,一键生成pdf文档
地址:
人脸识别
功能简介:在线人脸识别,自动识别人脸批量裁剪出头像图片
地址:
DIY卡通头像
功能简介:免费的动漫人物制作工具,可以随心定制男女卡通头像
地址:
传图识色
功能简介:可以识别出光标所在处图片的颜色,并提取出图片的主色调
地址:
手绘图片
功能简介:可以自动生成手绘风格照片,还可以改变照片的模糊度
地址:
图片转Base64
功能简介:图片和Base64编码互转
地址:
衣服尺码计算
功能简介:输入你的身高体重,即可计算出你需要的衣服尺寸
地址:
身份证信息查询
功能简介:输入身份证号,查询归属地、性别和出生年月
地址:
科学计算器
功能简介:开方(√)、圆周率(π)、倒数(1/x)、正弦(Sin)
地址:
大小写转换
功能简介:可以实现人民币数字大写转换和英文大小写转换
地址:
日期间隔计算
功能简介:一款可以计算两个日期之间的天数的工具
地址:
汉字转拼音
功能简介:可以将汉字转化为带声调的拼音
地址:
文字去重
功能简介:该工具可得到无重复数据的文字
地址:
单位换算器
功能简介:长度、面积、重量、温度等单位一键对等转换
地址:
中文简繁转换
功能简介:将输入的一段文字转换为简体或繁体
地址:
阴阳历转换
功能简介:支持农历公历互查,公历和农历互相转换
地址:
邮编区号查询
功能简介:输入省份、城市、区号或邮编查询该地区号
地址:
字数统计
功能简介:快速计算文章中汉字、标点、英文和数字的个数
地址:
这个加密好像是不能破解的吧,只能暴力破解,如果加密位数太多,现在的计数是无法解密的
有界面,我这里有个,但是是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");
}
因项目需要用到加解密,然后研究了下flutter大部分是用原生实现加解密的,但是这样不是我想要的,后面找资料发现dart有一个加密工具 encrypt 。然后研究了下,可以实现我们大部分加解密。
使用Dart实现加解密,有对称加密AES,非对称加密RSA。
工具类封装了AES加解密,RSA加解密和数字签名,RSA也实现分段加解密。
一、导包
二、工具类
....比如‘明文’用aes-ecb-256加密 zp填充 密码123 以utf8输出b64加密后就变成了‘lfKTZqoXmZGfuMRxrM1mCgGkDNwlro2vJc1/9+LAeoE=’解密就要反过来
所以你要知道你要解密的文件 加密方式 密码 填充 输出(二次加密) 和 编码 甚至还有偏移量所以 爆破?不存在的
具体是报什么错误呢?一般解密报错的情况有,输入不满足16的倍数个字节,这种情况会报,AES解密异常Given final block not properly padded,具体参考: 可以使用这个在线工具解密,如果报错会有相应的错误提示,希望能够帮助到你。