高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图。
在这里插入图片描述

AES加密后的长度变化

如果需要进一步编码为可显示字符串,则需进行BASE64编码或者十六进制编码。编码后的数据长度会进一步增加(BASE64是增长为4/3倍起的最小的4的倍数,十六进制编码是增长为2倍)。比如,对原文长度在32-47个字节之间的明文,经过AES256JNCryptor加密后的密文长度就是114个字节,再做一次BASE64编码转换成可显示字符就成了152个字符。
原明文长度 -> AES密文长度 -> BASE64编码长度
0-15 chars -> 82 bytes -> 112 chars
16-31 chars -> 98 bytes -> 132 chars
32-47 chars -> 114 bytes -> 152 chars
48-63 chars -> 130 bytes -> 176 chars
64-79 chars -> 146 bytes -> 196 chars

112-127 chars -> 194 bytes -> 260 chars

JDK256位AES支持

如果修改为32位或者更高位的的将会报java.security.InvalidKeyException: Illegal key size
解决办法:
下载对应的jar文件替换原有的,
jdk1.8的http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html。
其他版本的与之类似,下载好后解压,主要用到local_policy.jar和US_export_policy.jar,将其复制到JAVA_HOME下的\jre\lib\security中替换,即可。
在这里插入图片描述

RSA 加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法。非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥用于加密,私钥用于解密。
在这里插入图片描述
在这里插入图片描述

循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。

MD5 常常作为文件的签名出现,我们在下载文件的时候,常常会看到文件页面上附带一个扩展名为.MD5 的文本或者一行字符,这行字符就是就是把整个文件当作原数据通过MD5 计算后的值,我们下载文件后,可以用检查文件MD5 信息的软件对下载到的文件在进行一次计算。两次结果对比就可以确保下载到文件的准确性。 另一种常见用途就是网站敏感信息加密,比如用户名密码,支付签名等等。随着https 技术的普及,现在的网站广泛采用前台明文传输到后台,MD5 加密(使用偏移量)的方式保护敏感数据保护站点和数据安全。

AES高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图。RSARSA 加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法。非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥用于加密,私钥用于解密。CRC循环冗余校验(Cyclic Redundancy Check, C
使用luac53.exe进行编译***.lua文件的方法[适用于Windows系统]: 1.到lua官网https://sourceforge.net/projects/luabinaries/files/5.3.4/Tools%20Executables/下载 lua-5.3.4_Win32_bin.zip压缩包到D或E盘 2.解压lua-5.3.4_Win32_bin.zip文件 3.打...
3)使用GPG实现软件包的完整性校验,检查软件包签名 使用两台RHEL6虚拟机, 加密 操作主要在svr5上完成,而pc205作为接收方、测试用客户机、软件签名发布用机,如图-1所示。 实现此案例需要按照如...
2018.05.02更新 这段时间在翻备份的硬盘,突然发现了以前的分析项目和代码,从里面提取了之前附件的内容,现在上传给大家,真是柳暗花明又一村啊。附件包括201703版本的梦幻手游里面提取的so文件和一些 加密 后的资源文件(包括lua脚本),并包括了2个扑鱼APK文件,最后还打包了解密代码,供大家参考。 附件太大,快100MB,上传不来论坛,我又放到百度网盘了...... 链接:https://pan.baidu.com/s/1DVgH0qHYPkiHB...
如果你想要在Java Web 应用 接收 加密 字符串,你需要执行以下步骤: 1. 客户端或 应用 程序对要发送的数据进行 加密 ,可以使用对称 加密 算法 (如AES)或非对称 加密 算法 (如RSA)。 2. 在Java Web 应用 ,可以使用POST方法将 加密 的字符串发送到 web 接口。 3. 在Java Web 应用 的Controller ,可以通过@RequestBody注解接收POST请求的 加密 字符串,并解密它。 4. 在解密后,你可以将解密后的数据进行处理,例如将其转换为Java对象或存储在数据库 。 以下是一个简单的示例代码,它演示了如何在Spring Boot 接收 加密 字符串: ```java import org.springframework. web .bind.annotation.*; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; import java.util.Base64; @RestController public class MyController { @RequestMapping(value = "/my-api", method = RequestMethod.POST) public String myApi(@RequestBody String encryptedData) throws Exception { //解密 加密 字符串 String decryptedData = decryptData(encryptedData, "my-secret-key"); //将解密后的数据存储到数据库或进行其他操作 //TODO: do something with decrypted data //返回响应 return "OK"; //使用AES 算法 解密数据 private String decryptData(String encryptedData, String secretKey) throws Exception { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "AES"); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); byte[] decryptedBytes = cipher.doFinal(Base64.getMimeDecoder().decode(encryptedData.getBytes(StandardCharsets.UTF_8))); return new String(decryptedBytes, StandardCharsets.UTF_8); 这个示例 使用的是AES 算法 解密 加密 字符串。你需要将“my-secret-key”替换为你的真实密钥,并根据实际情况修改解密 算法 和密钥长度。