aes加密解密工具(aes加密怎么解)

2023-02-28 20:39:07 摩斯密码知识 思思

Flutter AES/RAS 加解密工具类

因项目需要用到加解密,然后研究了下flutter大部分是用原生实现加解密的,但是这样不是我想要的,后面找资料发现dart有一个加密工具 encrypt 。然后研究了下,可以实现我们大部分加解密。

使用Dart实现加解密,有对称加密AES,非对称加密RSA。

工具类封装了AES加解密,RSA加解密和数字签名,RSA也实现分段加解密。

一、导包

二、工具类

如何使用CryptoJS的AES方法进行加密和解密

首先准备一份明文和秘钥:

var plaintText = 'aaaaaaaaaaaaaaaa'; // 明文

var keyStr = 'bbbbbbbbbbbbbbbb'; // 一般key为一个字符串

参看官网文档,AES方法是支持AES-128、AES-192和AES-256的,加密过程中使用哪种加密方式取决于传入key的类型,否则就会按照AES-256的方式加密。

CryptoJS supports AES-128, AES-192, and AES-256. It will pick the variant by the size of the key you pass in. If you use a passphrase, then it will generate a 256-bit key.

由于Java就是按照128bit给的,但是由于是一个字符串,需要先在前端将其转为128bit的才行。

最开始以为使用CryptoJS.enc.Hex.parse就可以正确地将其转为128bit的key。但是不然...

经过多次尝试,需要使用CryptoJS.enc.Utf8.parse方法才可以将key转为128bit的。好吧,既然说了是多次尝试,那么就不知道原因了,后期再对其进行更深入的研究。

// 字符串类型的key用之前需要用uft8先parse一下才能用

var key = CryptoJS.enc.Utf8.parse(keyStr);

由于后端使用的是PKCS5Padding,但是在使用CryptoJS的时候发现根本没有这个偏移,查询后发现PKCS5Padding和PKCS7Padding是一样的东东,使用时默认就是按照PKCS7Padding进行偏移的。

// 加密

var encryptedData = CryptoJS.AES.encrypt(plaintText, key, {

mode: CryptoJS.mode.ECB,

padding: CryptoJS.pad.Pkcs7

});

由于CryptoJS生成的密文是一个对象,如果直接将其转为字符串是一个Base64编码过的,在encryptedData.ciphertext上的属性转为字符串才是后端需要的格式。

var encryptedBase64Str = encryptedData.toString();

// 输出:'RJcecVhTqCHHnlibzTypzuDvG8kjWC+ot8JuxWVdLgY=

console.log(encryptedBase64Str);

// 需要读取encryptedData上的ciphertext.toString()才能拿到跟Java一样的密文

var encryptedStr = encryptedData.ciphertext.toString();

// 输出:'44971e715853a821c79e589bcd3ca9cee0ef1bc923582fa8b7c26ec5655d2e06

console.log(encryptedStr);

由于加密后的密文为128位的字符串,那么解密时,需要将其转为Base64编码的格式。

那么就需要先使用方法CryptoJS.enc.Hex.parse转为十六进制,再使用CryptoJS.enc.Base64.stringify将其变为Base64编码的字符串,此时才可以传入CryptoJS.AES.decrypt方法中对其进行解密。

// 拿到字符串类型的密文需要先将其用Hex方法parse一下

var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr);

// 将密文转为Base64的字符串

// 只有Base64类型的字符串密文才能对其进行解密

var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);

使用转为Base64编码后的字符串即可传入CryptoJS.AES.decrypt方法中进行解密操作。

// 解密

var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, {

mode: CryptoJS.mode.ECB,

padding: CryptoJS.pad.Pkcs7

});

经过CryptoJS解密后,依然是一个对象,将其变成明文就需要按照Utf8格式转为字符串。

// 解密后,需要按照Utf8的方式将明文转位字符串

var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);

console.log(decryptedStr); // 'aaaaaaaaaaaaaaaa'

文件加密软件哪个最好用

文件加密软件最好用的如下:

1、隐身侠隐私文件加密工具

隐身侠加密软件是意畅公司自主研发,用于保护电脑及移动存储设备中的重要文件、私密信息以及多种程序的新一代电脑信息安全产品。隐身侠加密软件已获得公安部销售许可证、国家保密局检测证书、国家密码管理局销售许可证、国家版权局软件著作权证书等多项权威资质认证。

2、FileFriend

FileFriend是一款十分小巧的文件夹加密软件,使用这款完全中文的文件夹加密工具可以让你自由的对指定文件夹进行密码锁定,让除了你其他任何人都打不开这个文件夹。

3、密夹

密夹是国内领先的跨终端信息加密工具,支持多个终端,密夹文件加/解密、磁盘保险箱、加密传输、数据找回、手机加密备份等强大功能于一体,为用户提供信息数据安全保护。

4、闪电文件夹加密大师

闪电文件夹加密大师软件是一款专业强劲的数据加密软件,采用一种区块加密标准AES加密,加密速度快、安全性高、资源消耗低,不仅拥有文件/文件夹加密、解密、打开等功能,而且本地加密/解密,更安全,更高效,同时界面简洁,操作方便。

5、Lockdir

Lockdir是一款安全性高、使用简单、体积极小的便携式文件夹加密器,无需安装,一键加密,一键解密,加密算法高,是优秀的加密工具。

aes加密解密工具(aes加密怎么解) 第1张

aes 128,192,256如何加密?如何解密?有没有在线工具在线加密,在线解密?

....比如‘明文’用aes-ecb-256加密 zp填充 密码123 以utf8输出b64加密后就变成了‘lfKTZqoXmZGfuMRxrM1mCgGkDNwlro2vJc1/9+LAeoE=’解密就要反过来

所以你要知道你要解密的文件 加密方式 密码 填充 输出(二次加密) 和 编码 甚至还有偏移量所以 爆破?不存在的

aescrypt是一个好的文件加密工具吗

aescrypt的确是一个文件加密的软件,它可以运行在多个操作系统上,比如windows,linux什么的。同时它采用的是业界通用的AES加密算法。

举例,如果你在windows上用的话,之需要右键点击一下文件,然后选择AES加密/解密,同时输入密码就好了。挺简单的。