CyberChef使用学习(RSA、AES加解密&中文乱码问题)

CyberChef挺好用的一工具,但是网上搜索到的教程就那几篇对于初识者没什么用,在这里记录一下自己常用的功能和用法,以及解密时中文乱码怎么解决。


一、工具下载

工具下载地址:https://github.com/gchq/CyberChef 。直接下载zip,解压到任意目录。
在这里插入图片描述
双击.html文件即可打开工具,CyberChef有一点比较方便的就是它是一个html页面。
在这里插入图片描述

二、使用方法

1、简单加解密

简单来了解一下cyberchef界面:从搜索栏搜索我们需要的算法,如下图 To Base64 是base64加密, from base64 是解密算法。双击或者推拽我们所需要的算法把它放到recipe(配方)中接可以普通的进行加解密操作了。删除算法栏的算法也同样是双击或者拖拽。
在这里插入图片描述
另外有一个favourites可以添加我们常用的算法进去方便使用,相当于一个浏览器收藏栏。
在这里插入图片描述

点击后面的星星即可编辑收藏的算法
在这里插入图片描述

2、AES加解密

简单测试一下AES-base64编码,也是比较常用的吧。或者有些用的hex的话把 to base64 换成 to hex ,注意上下顺序不能错。换顺序也是推拽就行。
在这里插入图片描述
解密操作的算法就把加密的算法逆过来, to base64 变为 from base64 ,上下顺序也调换过来
在这里插入图片描述

3、RSA加解密

使用自带工具随意生成一对公私钥。把公钥复制进来,选择加密方式进行加密。
在这里插入图片描述
在这里插入图片描述
解密操作和AES类似,不再赘述。
在这里插入图片描述

4、中文乱码问题

(1)代码整理模块(code tidy)

有时解密出来的数据是乱码,大多是因为使用了中文,复制下来也依旧乱码,这里给出一个解决方案。
code tidy模块中有一个Syntax highlighter。这个模块是一个美化高亮操作,并且不会影响原有的缩进。
在这里插入图片描述
想要更加整齐的美化,如高亮、缩进之类的可根据加密数据的类型自行选择其它的beautify模块。
在这里插入图片描述

(2)美化后依然乱码问题解决

有一些可能直接美化还是乱码的,例如下图的情况。
在这里插入图片描述
此时把AES解密算法的输出改成HEX,output旁边会出现一个魔法棒,鼠标移动上去会显示出应该出现的中文字符。
在这里插入图片描述
点击一下魔法棒会自动帮我们添加一个 from hex 的算法,此时再加上我们的美化模块即可出现正确的中文字符。
在这里插入图片描述
在这里插入图片描述

首先,我们可以使用RSA算法来加密AES的密钥,然后使用AES算法来加密数据。 1. 生成RSA公私钥对 ```java KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA"); generator.initialize(2048); KeyPair keyPair = generator.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); ``` 2. 使用RSA公钥加密AES密钥 ```java // 生成AES密钥 KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); keyGenerator.init(128); SecretKey secretKey = keyGenerator.generateKey(); // 使用RSA公钥加密AES密钥 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] encryptedKey = cipher.doFinal(secretKey.getEncoded()); ``` 3. 使用AES密钥加密数据 ```java // 使用AES密钥加密数据 byte[] rawData = "hello world".getBytes("UTF-8"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] encryptedData = cipher.doFinal(rawData); ``` 4. 使用RSA私钥解密AES密钥 ```java // 使用RSA私钥解密AES密钥 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] decryptedKey = cipher.doFinal(encryptedKey); SecretKey originalKey = new SecretKeySpec(decryptedKey, 0, decryptedKey.length, "AES"); ``` 5. 使用AES密钥解密数据 ```java // 使用AES密钥解密数据 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, originalKey); byte[] decryptedData = cipher.doFinal(encryptedData); ``` 注意事项: - AES密钥需要保密,不能直接传输或存储。 - RSA加密的数据长度不能超过RSA公钥的长度。因此,如果需要加密的数据较长,可以使用AES算法对数据进行分块加密。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值